0

我有以下部分 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(" ");
            });
        });     
    });

注意:加载上述代码的页面来自类似的 URL http://lesni.org/some/page,因此同源策略不是问题。

但它似乎不起作用,我不知道为什么。

它调用的 PHP 文件是正确的。当我在浏览器中手动输入时:

http://lesni.org/kss/dodaj_zadanie.php?pid=1&zad=abc

它工作正常(将记录添加到数据库)。但是ajax代码不起作用。它不会抛出任何错误,或者我不知道它是否会抛出任何错误......

所以问题是:我如何诊断这部分 AJAX 代码以了解问题所在。我也试过POST版本,没有效果。

4

1 回答 1

1

你这样指定data

data: { 
    pid: ($(this).attr('alt')),
    zad: encodeURI(s)
}

当您通过 将对象传递给 jQuery 时data,您不需要(或不想)对其进行编码。(你只能用一个字符串来做。)jQuery 为你做这件事。(如果您确实想对其进行编码,则需要encodeURIComponent,而不是encodeURI)。因此,您最终会得到双重编码的实体,因此无法正常工作。

那应该是:

data: { 
    pid: ($(this).attr('alt')),
    zad: s
}

(您也不需要围绕 的值的括号pid,但它们是无害的,所以我离开了它们。)


但是回答问题

如何诊断不抛出任何错误消息的 AJAX 错误?

...你这样做

  • 查看任何不错的浏览器开发工具中的“网络”选项卡,它可以准确地向您显示它发送到服务器的内容以及返回的内容。

  • 使用服务器端调试(适当的调试,或通过将内容转储到日志中)来查看服务器接收到的确切内容。

  • 查看服务器端日志以确保请求了正确的资源。

...等等。

于 2013-02-25T23:26:38.807 回答