C# ajax调用有时不会激发WebC方法
我在我的网页中有一个关于按钮点击事件的jQuery.ajax调用。这个ajax调用将相当多的标记发送回服务器。经过一些处理后,服务器发回一个小URL地址。这有时很好,但有时不行。我在ajax调用之前有一个断点,在我的WebMethod中也有一些断点。看起来有时候WebMethod甚至没有被击中 是什么导致.ajax调用失败?我假设我发送的参数中一定有什么东西。但我正在逃避加价 有人有什么想法吗C# ajax调用有时不会激发WebC方法,c#,jquery,asmx,C#,Jquery,Asmx,我在我的网页中有一个关于按钮点击事件的jQuery.ajax调用。这个ajax调用将相当多的标记发送回服务器。经过一些处理后,服务器发回一个小URL地址。这有时很好,但有时不行。我在ajax调用之前有一个断点,在我的WebMethod中也有一些断点。看起来有时候WebMethod甚至没有被击中 是什么导致.ajax调用失败?我假设我发送的参数中一定有什么东西。但我正在逃避加价 有人有什么想法吗 $.ajax({ type: 'POST', url: 'WebServices.as
$.ajax({
type: 'POST',
url: 'WebServices.asmx/GetBitmapPathForVML',
contentType: 'application/json; charset=utf-8',
data: '{"sVML" : "' + escape($('#divChart')[0].innerHTML) +
'","width" : 800,"height": 600}',
dataType: 'json',
success: function(result) {
var newWindow = window.open ("", "Chart","");
//blah blah
newWindow.document.write("<BODY>");
newWindow.document.write(
'<img src="file" alt="Chart"></img>'.replace('file',result.d)
);
newWindow.document.write("</BODY>");
//blah blah
}
});
我建议您重新编写您的方法,如下所示:
$.ajax({
type: 'POST',
url: 'WebServices.asmx/GetBitmapPathForVML',
contentType: 'application/json; charset=utf-8',
data: JSON.stringify({
sVML: $('#divChart').html(),
width: 800,
height: 600
}),
dataType: 'json',
success: function(result) {
var newWindow = window.open ("", "Chart","");
//blah blah
newWindow.document.write("<BODY>");
newWindow.document.write(
'<img src="file" alt="Chart"></img>'.replace('file',result.d)
);
newWindow.document.write("</BODY>");
//blah blah
}
});
我建议您重新编写您的方法,如下所示:
$.ajax({
type: 'POST',
url: 'WebServices.asmx/GetBitmapPathForVML',
contentType: 'application/json; charset=utf-8',
data: JSON.stringify({
sVML: $('#divChart').html(),
width: 800,
height: 600
}),
dataType: 'json',
success: function(result) {
var newWindow = window.open ("", "Chart","");
//blah blah
newWindow.document.write("<BODY>");
newWindow.document.write(
'<img src="file" alt="Chart"></img>'.replace('file',result.d)
);
newWindow.document.write("</BODY>");
//blah blah
}
});
埃尔·罗诺科
我建议您添加一个错误:回调以检查发生了什么。也许你可以从中得到有用的信息。El Ronnoco
我建议您添加一个错误:回调以检查发生了什么。也许你可以从中得到有用的信息。我不喜欢回答我自己的问题,但我不是,真的。但问题在于最大JSON长度属性 我找到了 …并将此添加到我的网络配置中
<system.web.extensions>
<scripting>
<webServices>
<jsonSerialization maxJsonLength="2097152"/>
</webServices>
</scripting>
</system.web.extensions>
谢谢大家的回答,尤其是那些关于捕捉错误的回答。我不喜欢回答我自己的问题,不是说我是,真的。但问题在于最大JSON长度属性 我找到了 …并将此添加到我的网络配置中
<system.web.extensions>
<scripting>
<webServices>
<jsonSerialization maxJsonLength="2097152"/>
</webServices>
</scripting>
</system.web.extensions>
感谢所有的回答,特别是关于捕捉错误的回答。如果方法中没有任何内容为空,您是否能够一直点击服务?检查jQuery ajax的错误和超时选项,这应该会对您有所帮助。另外,如果您调用Web服务的方式有问题,您应该会从客户端收到一个脚本错误。@jamietre谢谢,我发现了错误。字符串的长度超过了maxJsonLength属性上设置的值。知道如何处理吗?可能是缓存问题。。尝试通过在设置中添加cache:false来禁用cache。@El Ronnoco,请参见:。。。但是,与其尝试调整允许的最大大小,不如考虑体系结构,为什么要将整个HTML表发送回客户端?也许你应该提取相关数据并发送出去。使用jquery应该很容易做到这一点。如果出于某种原因确实要这样做,您可能必须将其分块并多次调用该服务。如果您没有向该方法发布任何null值,您是否能够一直命中该服务?请检查jQuery ajax的错误和超时选项,这将对您有所帮助。另外,如果您调用Web服务的方式有问题,您应该会从客户端收到一个脚本错误。@jamietre谢谢,我发现了错误。字符串的长度超过了maxJsonLength属性上设置的值。知道如何处理吗?可能是缓存问题。。尝试通过在设置中添加cache:false来禁用cache。@El Ronnoco,请参见:。。。但是,与其尝试调整允许的最大大小,不如考虑体系结构,为什么要将整个HTML表发送回客户端?也许你应该提取相关数据并发送出去。使用jquery应该很容易做到这一点。如果出于某种原因您真的想这样做,您可能必须将其分成若干块并多次调用该服务。我需要使用JSON.stringify哪个库?。但是这种方法是在现代浏览器中本机实现的,如果支持,库只需将调用委托给本机方法。因此,如果您使用的是现代浏览器,则不需要包含任何内容。恐怕我不得不为IE6开发:这是一个很好的建议,因为我对我的JSON结构不满意。我将努力在未来的项目中使用它,但是在这个例子中,这不是我问题的原因。我需要使用JSON.stringify?哪个库?。但是这种方法是在现代浏览器中本机实现的,如果支持,库只需将调用委托给本机方法。因此,如果您使用的是现代浏览器,则不需要包含任何内容。恐怕我不得不为IE6开发:这是一个很好的建议,因为我对我的JSON结构不满意。我将努力在未来的项目中使用它,但在这种情况下,这不是我问题的原因。