Vic*_*tor 3 asp.net ajax jquery json
好吧,这应该是一个相当简单的问题,我可能遗漏了一些明显的东西.我有一个简单的脚本向服务器发出请求:
var DTO = { 'path': path };
var url = 'default.aspx/Get';
var test;
$('#getInstance').click(function () {
$.ajax({
url: url,
type: 'POST',
dataType: 'json',
data: JSON.stringify(DTO),
contentType: 'application/json; charset=utf-8',
success: function (msg) {
test = msg;
},
error: function (jqXHR, textStatus, errorThrown) {
alert(textStatus);
alert(errorThrown);
}
});
});
Run Code Online (Sandbox Code Playgroud)
这很好,因为它连接到服务器并获取数据,只有一个简单的问题.它将此请求视为跨域请求,因此使用jsonp.服务器代码在这里:
[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public static MyObject Get(string path)
{
MyObject foo = new MyObject();
return foo;
}
Run Code Online (Sandbox Code Playgroud)
通常这不会是一个问题,除了我访问WebMethod,它没有能力返回一个jsonp响应(意味着它无法将回调函数附加到响应.现在,如果这是一个手动响应,我可以破解它并附加参数,但我正在利用内置的序列化,所以没有办法搞砸响应.
为了帮助澄清.该页面托管在:
http://127.0.0.1:144/default.aspx
并且在firebug中看到的请求是:
http://127.0.0.1:144/default.aspx/Get?callback=jQuery1502768168154247801_1298656485388
让我强调一下这段代码的工作原理.唯一的问题是jQuery将此请求视为跨域.但为什么?
更新:嗯,经过更多的时间和更多的测试后,我已经将这个问题缩小到了jquery 1.5.1中的一个错误.我使用旧版本(所有1.4版本)进行了一些测试,我没有遇到任何问题,请求是使用JSON进行的,并且响应已成功收到.他们将这个请求视为CORS的变化是什么?
经过一番研究,终于确定了这个问题.如我上次更新中所示,该问题与使用jQuery 1.5版本有关.当我没有想法时,我尝试了之前的jQuery版本,你知道什么,它按预期工作.
当我准备提交错误报告时,我搜索了错误数据库并发现了一些匹配相同行为的错误报告.事实证明这是影响新jQuery版本的jQuery验证插件中的一个错误.
| 归档时间: |
|
| 查看次数: |
1712 次 |
| 最近记录: |