Php 如何诊断没有抛出任何错误消息的AJAX错误?
我有以下部分ajax代码:Php 如何诊断没有抛出任何错误消息的AJAX错误?,php,javascript,jquery,ajax,Php,Javascript,Jquery,Ajax,我有以下部分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://les
$(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(" ");
});
});
});
它工作正常(将记录添加到数据库)。但是ajax代码不起作用。它不会出错,或者我不知道它是否会出错
所以问题是:我如何诊断AJAX代码的这一部分以了解问题所在。我还尝试了
POST
版本,但没有效果 您正在指定数据
如下:
data: {
pid: ($(this).attr('alt')),
zad: encodeURI(s)
}
当您通过数据
将对象传递给jQuery时,不需要(或想要)对其进行编码。(您只能使用字符串来完成此操作。)jQuery为您完成此操作。(如果确实要对其进行编码,则需要encodeURIComponent
,而不是encodeURI
)。因此,您将得到双重编码的实体,因此无法正常工作
这应该是:
data: {
pid: ($(this).attr('alt')),
zad: s
}
(您也不需要围绕pid
的值设置参数,但它们是无害的,所以我将它们保留下来。)
但是回答这个问题 如何诊断没有抛出任何错误消息的AJAX错误 …你是靠
- 查看任何一款像样的浏览器开发工具中的“网络”选项卡,它准确地显示了它发送到服务器的内容和返回的内容
- 使用服务器端调试(适当的调试,或将内容转储到日志中)查看服务器接收到的内容
- 查看服务器端日志以确保请求了正确的资源
…等等。使用FireBug或DeveloperTools检查网络流量一个起点是使用
错误
回调给您的信息<代码>错误:函数(err){alert(err);}不会提供任何有用的信息,因为的第一个参数是jQuery XHR对象。第二个和第三个参数更有用。。您必须在uri中传递GET参数,而不是通过数据字段chrome:CTRL+SHIFT+I打开开发工具。点击ESC,控制台在底部弹出(有用,当HTTP请求返回错误代码时打印错误)。单击顶部的“网络”图标。从控制台正上方的菜单栏中,单击“XHR”。现在,您可以立即看到AJAX调用中发生的一切。@Philipp:您可以将data
与GET
请求一起使用,这不是问题,jQuery将把数据(正确编码)附加到URL。我不知道为什么,但它似乎可以工作。我删除了encodeURI
,它似乎开始工作了。谢谢@加切克:可能是双重编码。我很高兴能把它整理好!
data: {
pid: ($(this).attr('alt')),
zad: s
}