如何将id从webmethod中的函数返回到javascript代码
Posted
技术标签:
【中文标题】如何将id从webmethod中的函数返回到javascript代码【英文标题】:How to return id from function in webmethod to javascript code 【发布时间】:2020-11-08 17:25:29 【问题描述】:我有这个 javascript 函数来使用 JSON 插入数据
function Create(Name,Description)
var obj = ;
obj.Name = Name;
obj.Description = Description;
$.ajax
(
type: "Post",
url: "/test.asmx/Create",
dataType: 'JSON',
contentType: "application/Json; Charset= Utf-8",
data: JSON.stringify(obj),
success: function ()
alert("Great");
,
error: function (response)
alert(response);
);
这是我的 WebMethod
在我的网络服务中,我需要获取插入到我的 javascript 代码中的数据 ID
[WebMethod]
public int Create(string Name, string Description)
try
var Qer = new DAL.MOD.TABLE1
kName = Name,
Description = Description
;
t.Create(Qer);
return Qer.Id;
catch
return -1;
有人对如何实现这一点有任何建议吗?
【问题讨论】:
那么你需要在 JavaScript 中获取你从服务返回的 Qer.Id 吗? @prathameshk73 是的 【参考方案1】:如果ajax调用且web方法运行正常,则可以通过ajax代码的success函数访问结果;
success: function (result)
alert(result);
,
在上面的sn-p中,result参数应该是从web方法返回的Id值。
【讨论】:
【参考方案2】:您可以在 ajax 成功 函数中访问 Id。如果它进入错误功能,那么您需要检查您的服务。
function Create(Name,Description)
var obj = ;
obj.Name = Name;
obj.Description = Description;
$.ajax
(
type: "Post",
url: "/test.asmx/Create",
dataType: 'JSON',
contentType: "application/Json; Charset= Utf-8",
data: JSON.stringify(obj),
success: function (response)
if (response)
// Query Id
alert(response);
,
error: function (response)
alert(response);
);
【讨论】:
尝试使用 console.log(response) 代替警报。您应该会在控制台中看到 Id。 jquery 返回一个 xhr 对象。您不能只显示或使用对象作为响应。您必须使用重新调整的对象的 .d 方法来根据我下面的回复提取数据。即使您将响应类型设置为文本,仍然会返回一个 xhr 对象,您仍然需要使用 xhr 对象的 .d 方法来获取返回的数据。【参考方案3】:function Create(Name,Description)
var obj = ;
obj.Name = Name;
obj.Description = Description;
$.ajax
(
type: "Post",
url: "/test.asmx/Create",
dataType: 'JSON',
contentType: "application/Json; Charset= Utf-8",
data: JSON.stringify(obj),
success: function (response)
alert(response.d);
,
error: function (response)
alert(response);
);
【讨论】:
【参考方案4】:好的,正如其他人所说,您需要创建/设置/拥有一个在异步调用完成时被回调的函数。您可以使用内联函数()并且效果很好。所以一个全新的 function() 是动态创建的。
下一个? 您不能只使用“响应”,而必须使用“.d”作为数据。
因此这将起作用:
$.ajax(
type: "POST",
url: 'WebForm1.aspx/HelloWorld',
contentType: "application/json",
datatype: "json",
success: function(responseFromServer)
alert(responseFromServer.d)
);
注意 .d 以从响应对象中获取数据。
如果你返回两个值呢? 这么说:
[WebMethod()]
public static string[] HelloWorld()
string[] twovalues = new string[2];
twovalues[0] = "This is the first return value";
twovalues[1] = "This is the second return value";
return twovalues;
所以,现在你可以像这样得到两个返回值:
$.ajax(
type: "POST",
url: 'WebForm1.aspx/HelloWorld',
contentType: "application/json",
datatype: "text",
success: function(responseFromServer)
alert(responseFromServer.d[0]);
alert(responseFromServer.d[1]);
);
所以响应是一个返回的对象。您使用响应对象的“.d”方法来获取数据。并且如上所述,如果返回的值超过一个,那么您可以使用 [] 数组引用来提取/获取每个返回的值。
【讨论】:
以上是关于如何将id从webmethod中的函数返回到javascript代码的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 AJAX (jquery) 将嵌套的对象数组传递和接收到 c# WebMethod 中?