gpt4 book ai didi

jquery - 为什么调用我的 ASP.NET WebMethod 会调用我的错误处理程序?

转载 作者:行者123 更新时间:2023-12-01 07:28:17 26 4
gpt4 key购买 nike

我正在尝试使用 AJAX 从 ASP.NET 网页调用 Web 服务。但它总是调用我的错误处理程序而不是我的成功处理程序。

这是我的 JavaScript:

function DeleteCurrency(currenciesId) {
$.ajax({
url: "Ajax/Currencies.asmx/GetCurrencyUsage",
data: "{ 'currencyId' : '" + currenciesId + "' }",
failure: function (msg) {
alert('Failure: ' + msg);
},
error: function (result, thrownError) {
alert('Error:');
},
success: function (results) {
alert('Success: ' + results);
}
});
}

这是我的 asmx 文件中的代码:

/// <summary>
/// Summary description for Currencies
/// </summary>
[WebService(Namespace = "http://xxx.com/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.Web.Script.Services.ScriptService]
[System.ComponentModel.ToolboxItem(false)]
public class Currencies : System.Web.Services.WebService
{
[WebMethod]
public string[] GetCurrencyUsage(int currencyId) {
List<string> list = new List<string>();
list.Add(currencyId.ToString());
list.Add("This is item 1");
list.Add("This is item 2");
list.Add("This is item 3");
list.Add("This is item 4");
list.Add("This is item 5");
return list.ToArray();
}
}

根据 Fiddler 的说法,这是我要发送的内容:

{ 'currencyId' : 3 }

这是网络服务返回的内容:

{"d":["3","This is item 1","This is item 2","This is item 3","This is item 4","This is item 5"]}

如上所述,我的错误处理程序被调用。但结果参数的状态显示“OK”和 200。第二个参数的类型为 parsererror

所有数据似乎都在那里,那么错误在哪里。它与结果中的“d”:有关系吗?我不知道下一步该去哪里。

编辑:

进一步的测试表明,如果我将 Web 服务更改为返回单个字符串(而不是数组),一切都会按预期运行。

显然,我的 Web 服务被正确调用,它返回状态 200(正常),并且还返回预期数据。但是当存在多个值时,解析结果时会出现某种错误。我仍然想知道它是否与“D”有关,但我不确定。

最佳答案

尝试添加:

contentType: "application/json; charset=utf-8" ,
dataType: "json",
type: "POST",

您的ajax请求

在您的成功处理程序上,调用:

alert('Success: ' + results.d.length);

它应该提醒5

此外,我以前没有见过那个“失败”处理程序。我现在会将其注释掉以防万一...我认为“错误”处理程序应该足够了。

关于jquery - 为什么调用我的 ASP.NET WebMethod 会调用我的错误处理程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8157720/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com