使用 ajax 调用 cs 函数和 js 中的数据



我想在用户单击"删除"按钮后从aspx页面中的js函数访问cs函数。 并将 id 发送到 cs 函数。

我尝试以下代码:

.js

function deleteClick(ID) {
'<%Session["ID"] = "' + ID + '"; %>';
var x = '<%= Session["ID"] %>';
alert(x);
$.ajax({
type: "POST",
url: "AddPI.aspx/deleteClick",
//data: ' {ID:"' + ID + '"}',
data: JSON.stringify({ ID: "' + ID + '" }),
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (response) {
alert("Success");
},
failure: function (response) {
alert("Error");
}
});
}

.cs

public void deleteClick(String ID)
{
Session["ID"] = Request.Params["ID"];
var id = "";
id = Session["ID"].ToString();
DialogResult myResult;
myResult = MessageBox.Show("Are you sure?", "Delete Confirmation", 
MessageBoxButtons.OKCancel, MessageBoxIcon.Question);
if (myResult == DialogResult.OK)
{
errorbox.Visible = false;
//connect to database and delete
}
}

问题是 ID 无法传递!

编辑:我通过将cs函数更改为静态并编辑以下字段来解决问题

data: "{ ID: '" + ID + "'}",    

就是这样。

现在的问题是如何在静态 cs 函数中更改 aspxdiv 的可见性?

errorbox.Visible = false;

我得到:非静态字段需要 Ann 对象引用....

我尝试在成功时调用 JS

success: setVisibility, 

在 js 中:

$("#errorbox").hide();

但它不起作用!

//Js Code
function deleteClick(ID) {
alert(ID);
$.ajax({
type: "POST",
url: "Default.aspx/deleteClick",
data: '{ID: "'+ID+'" }',
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (response) {
alert(response.d);
},
failure: function (response,a,a2) {
alert("Not Done");
}
});
}



//c# Code
[System.Web.Services.WebMethod]
public static string deleteClick(string ID)
{
//Your Code
return null;
}

注意到您的第一个问题已由您解决,这太棒了! :)

您还有另一个问题,您需要在发生错误时更改div 的可见性。好吧,您将diverrorbox的可见性更改为默认值true

errorbox.Visible = true;

在你的脚本部分,使用 jQuery 隐藏这个div:

$(function(){
$('[id$=errorbox]').hide(); //this will auto-run after page is completely loaded.
});

对 CS 函数进行少量更改,例如:

public string deleteClick(String ID)
{
Session["ID"] = Request.Params["ID"];
var id = "";
id = Session["ID"].ToString();
DialogResult myResult;
myResult = MessageBox.Show("Are you sure?", "Delete Confirmation", 
MessageBoxButtons.OKCancel, MessageBoxIcon.Question);
if (myResult == DialogResult.OK)
{
errorbox.Visible = false;
//connect to database and delete
return "true"; //if successful
}
return "false"; //if not successful
}

然后,如果您的 ajax 响应发生任何错误(成功/错误(,只需在 ajax 中执行此操作:

success: function (response) {
if(response.d == "true")
{
alert('success');
}
else{
$('[id$=errorbox]').show();
}
},
error: function (response) {
$('[id$=errorbox]').show();
}

最新更新