1

我有一段时间没有使用 ajax,现在我什至无法让这个简单的程序工作,我做错了什么吗?

        <script type = "text/javascript" src = "jquery-1.9.1.min.js"></script>
    <script type = "text/javascript">
        alert("");
        var count = 0;
        $.ajax({
               url: 'get.php',
               dataType: 'json',
               success: function () 
               {       
                alert("");
               } 
        });
        alert("");
    </script>

<?php
echo "yay";
?>

谢谢

4

3 回答 3

4

设置dataType为“json”意味着来自的响应get.php被解析为 JSON。如果它不是有效的 JSON 或响应为空,则请求将失败。

如果 URL 不正确(找不到...HTTP 404 错误),则请求将失败。

请求默认type是“GET”,所以如果get.php不允许“GET”(由于某种原因),它会返回一个HTTP错误,请求会失败。

如果服务器出现错误,它可能会返回 HTTP 500 错误,并且请求将失败。

有助于调试的方法是将error选项添加到$.ajax调用中并查看是否调用了该选项。相反,我使用该.fail()方法......它做同样的事情。

当然,更直接的调试方式是打开浏览器的控制台并查看 AJAX 请求。它应该显示有关它的多个详细信息,可以帮助您确定任何问题。

看起来好像从未执行/发送 AJAX 请求,因为您看不到alert中间的 。好吧,仅仅因为请求不成功,并不意味着它被跳过了。请求可能失败的原因有很多(我在上面提到了几个)。该.fail()方法将帮助您确定原因。

此外,在 jQuery 中处理延迟对象的通用约定是使用doneandfail方法,因此这是一种选择。当然,$.ajax您可以指定特定选项(successerrorcomplete- 用于其他内容),因此这也是一个选项。您还可以使用作为从返回的对象的一部分的特殊方法 ( .success(), .error(), ) ,但从 1.8 版开始不推荐使用这些方法 - 请查看底部的文档 - http://api.jquery.com/jQuery。阿贾克斯/ . 但这是我设置它的方式,它应该与你的没有什么不同,但确实会捕获错误:.complete()$.ajax.ajax

$.ajax({
    url: 'get.php',
    dataType: 'json'
}).done(data) {
    console.log("successful response");
}).fail(jqXHR, textStatus, errorThrown) {
    console.log("error: " + textStatus + ", " + errorThrown);
});
于 2013-04-08T20:00:11.423 回答
0

你确定 jQuery 在你的 ajax 调用被命中时已经加载了吗?

尝试将其包装在准备好的文档中,以确保您确实已加载

$(document).ready(function () {
    alert("");
    var count = 0;
    $.ajax({
        url: 'get.php',
        dataType: 'json',
        }).alwaysfunction () {
           alert("call was hit");
        });
    });

});
于 2013-04-08T20:12:36.463 回答
0

如果 get.php 有问题,你的代码不会显示任何问题,jquery.ajax() 只是吞下错误。

甚至在将 .failure 回调例程添加到您的 ajax 调用之前,您应该能够检查执行 get.php 的 Web 服务器上的错误日志,任何与执行 get.php 相关的错误都会被记录下来。

于 2013-04-08T20:25:15.413 回答