Php 如何诊断没有抛出任何错误消息的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

我有以下部分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(" ");
            });
        });     
    });
它工作正常(将记录添加到数据库)。但是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
}