我在使用JQuery ajax时遇到了一些不寻常的问题。我使用IIS来托管我的Web应用程序,我有一个http处理程序,我只启用了它的POST动词。使用JQuery ajax,我将数据发布到这个http处理程序,这在我们的开发和测试环境中工作正常,并且大部分时间也在生产环境中工作。但有时我们会将空的帖子数据发送到服务器上。当我们查看IISLog上的csBytes时,我们发现它与其他成功发布请求相比非常少。我们使用JSON.js将javascript对象转换回原始json字符串和最新的jquery.1-3.js以便发布到服务器。有人知道为什么会这样吗?
答案 0 :(得分:1)
我遇到了同样的问题。使用tamperdata我确定我的响应标题是404错误。您的路径是否正确映射?
例: 这适用于我的本地计算机进行开发,但不适用于IIS服务器:
$.post('/Reservation/UpdateHeadCount', {
id: '<%= Html.Encode(Model.reservation_id) %>',
newHeadCount: SelectedVal
});
这适用于:
$.post('<%= VirtualPathUtility.ToAbsolute("~/Reservation/UpdateHeadCount") %>', {
id: '<%= Html.Encode(Model.reservation_id) %>',
newHeadCount: SelectedVal
});
答案 1 :(得分:0)
不确定但是这可能是浏览器错误造成的?由于你正在向服务器发送一个空帖子,jquery post方法正常工作,但似乎json-conversion在某些情况下不起作用。
您应该查看发布这些空值的USER-AGENT的IIS日志文件。
当然也有可能有人正在对您的服务器进行手动POST ...寻找利用漏洞。
答案 2 :(得分:0)
我认为浏览器配置和用户手动发布都不是问题。因为同一会话http处理程序成功地使用相同的客户端IP和用户代理接收了一些发布数据。我们的用户不是那么高的专业人员来做手工贴子。因此,我认为浏览器配置可能不会出现问题。
答案 3 :(得分:0)
对于MVC,请使用Url.Content帮助程序 $ .post('@ Url.Content(“〜/ Settings / Load”)',OnSettingsLoaded);