ASP.NET AJAX to Code后面的函数调用Error

时间:2011-12-19 17:40:57

标签: asp.net ajax error-handling code-behind

我正在使用以下调用将数据发送回服务器:

$.ajax({
  type: "POST",
  url: "MyTestPage.aspx/UpdateData",
  data: updates,
  contentType: "application/json; charset=utf-8",
  dataType: "json",
  success: function (msg) {
                 alert('Success!');
  },
  error: function (msg) {
                  alert('Failure!');
  }
});

背后的代码看起来像

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.Services;

namespace TestNamespace
{
    public partial class MyTestPage: System.Web.UI.Page
    {
        [WebMethod]
        public static bool UpdateData(string IDs, string Values)
        {
            return true;
        }

    }
}

来自Chrome的请求付费加载,即UI更新变量的值为:{ IDS : "21TOK31" , VALUES : "2TOK2"}

请求没有触及代码隐藏功能,并且由于错误,ajax函数总是进入故障块。

当没有数据传递且函数后面的代码没有参数时,请求命中函数后面的代码。

我不熟悉在ASP.NET中使用JSON。有人可以指导我解决问题吗?以及如何最好地解决它。

3 个答案:

答案 0 :(得分:1)

将错误功能修改为:

error: function (xhr, err) { alert("readyState: " + xhr.readyState + "\nstatus: " + xhr.status + "\nresponseText: " + xhr.responseText); }

你会看到确切的错误。

就个人而言,我只是在函数中放置了断点,给我带来了问题并在本地运行以进行调试,

答案 1 :(得分:0)

进行问题排查:

  1. 打开Chrome debugger
  2. 点击“网络”标签
  3. 提交您正在执行的ajax请求
  4. 您应该看到MyTestPage.aspx / UpdateData的请求 - 点击它
  5. 在“预览”标签下,您将看到.NET正在返回的错误消息
  6. 如果您仍然遇到问题,请发布结果,这将为您提供正在发生的真实错误。

答案 2 :(得分:0)

如果您使用以下内容,它是否有效:

var updates = '{"IDs":"21TOK31","Values":"2TOK2"}';

webconfig文件中还有一些需要设置的配置设置,但我假设您有这些设置,因为您的返回值为空。

由于asp返回数据的格式,您可能需要的另一件事是转换器:(在您的javascript ajax调用中)

converters: {
    "json jsond": function(msg)
    {
        return msg.hasOwnProperty('d') ? msg.d : msg;
    }
},

并改变:

contentType: "application/json",