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

标签 jquery asp.net ajax web-services webmethod

我正在尝试使用 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/

相关文章:

javascript - AJAX 请求无法正常工作

jQuery 单击不会触发异步添加的元素

javascript - 在向 jQuery UI 对话框添加按钮时,如何防止他人更改或避免我的 JavaScript 逻辑?

c# - Powerpoint Process 适用于独立控制台项目,但不适用于集成项目

c# - 在动态创建的多线程中维持参数值? (C#)

javascript - 无法从 json 对象获取值

javascript - Jquery - 使用 data() 按类对 div 进行排序

jquery - 如何更改 jQuery 自动保存提交中表单提交的操作? (在 rails 中)

javascript - 如何将 GridView ID 和其他控件传递到 jQuery 函数中?

javascript - Node js ajax post请求