我正在使用以下调用将数据发送回服务器:
$.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。有人可以指导我解决问题吗?以及如何最好地解决它。
答案 0 :(得分:1)
将错误功能修改为:
error: function (xhr, err) { alert("readyState: " + xhr.readyState + "\nstatus: " + xhr.status + "\nresponseText: " + xhr.responseText); }
你会看到确切的错误。
就个人而言,我只是在函数中放置了断点,给我带来了问题并在本地运行以进行调试,
答案 1 :(得分:0)
进行问题排查:
如果您仍然遇到问题,请发布结果,这将为您提供正在发生的真实错误。
答案 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",