我有以下部分的ajax代码:
$(document).ready(function(){
$("form input#dodaj").click(function(){
var s = $("form input#zad").val();
var str = "<li>"+s+"</li>";
$.ajax( {
type: "GET",
url: "http://lesni.org/kss/dodaj_zadanie.php",
data: {
pid: ($(this).attr('alt')),
zad: encodeURI(s)},
error: function( err ){ alert(err); }
}
).done(function(){
$("ul#zadania").append(str);
$("form input#zad").val(" ");
});
});
});
注意:加载上述代码的页面来自http://lesni.org/some/page
之类的网址,因此同源策略不是问题。
但它似乎不起作用,我不知道为什么。
它正在调用的PHP文件是正确的。当我在浏览器中手动输入时:
http://lesni.org/kss/dodaj_zadanie.php?pid=1&zad=abc
它正常工作(将记录添加到数据库)。但是ajax代码无效。并且它不会抛出任何错误,或者我不知道它是否会引发任何错误......
所以问题是:如何诊断这部分AJAX代码以了解错误。我也尝试了POST
版本,没有效果。
答案 0 :(得分:1)
您正在指定data
,如下所示:
data: {
pid: ($(this).attr('alt')),
zad: encodeURI(s)
}
当您通过data
将对象传递给jQuery时,不需要(或想要)对其进行编码。 (你只用字符串做。)jQuery为你做到了。 (如果 想要对其进行编码,则需要encodeURIComponent
,而不是encodeURI
)。因此,您最终会得到双重编码的实体,因此无法正常运行。
应该是:
data: {
pid: ($(this).attr('alt')),
zad: s
}
(你也不需要围绕pid
值的parens,但它们是无害的,所以我离开了它们。)
但回答这个问题
如何诊断没有抛出任何错误消息的AJAX错误?
...你这样做
查看任何体面的浏览器开发工具中的“网络”选项卡,它显示完全它发送给服务器的内容以及它返回的内容。
使用服务器端调试(正确调试,或通过将内容转储到日志中)来查看完全服务器收到的内容。
查看服务器端日志以确保请求了正确的资源。
......等等。