我有一段时间没用过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";
?>
由于
答案 0 :(得分: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中处理延迟对象的通用约定是使用done
和fail
方法,因此这是一个选项。当然,$.ajax
具有您可以指定的特定选项(success
,error
和complete
- 这是其他内容),因此这也是一个选项。您还可以使用属于从.success()
返回的对象的一部分的特殊方法(.error()
,.complete()
,$.ajax
),但从版本1.8开始不推荐使用这些方法 - 查看底部的.ajax
文档 - http://api.jquery.com/jQuery.ajax/。但这是我如何设置它,它应该与你的不同,但确实会发现错误:
$.ajax({
url: 'get.php',
dataType: 'json'
}).done(data) {
console.log("successful response");
}).fail(jqXHR, textStatus, errorThrown) {
console.log("error: " + textStatus + ", " + errorThrown);
});
答案 1 :(得分:0)
你确定在你的ajax调用被命中时jQuery已经加载了吗?
尝试将其包装在doc中,以确保您实际已加载
$(document).ready(function () {
alert("");
var count = 0;
$.ajax({
url: 'get.php',
dataType: 'json',
}).alwaysfunction () {
alert("call was hit");
});
});
});
答案 2 :(得分:0)
如果get.php出现问题,你的代码不会指出任何问题,jquery.ajax()只是吞下错误。
甚至在将.failure回调例程添加到ajax调用之前,您应该能够检查执行get.php的Web服务器上的错误日志,将记录与执行get.php相关的任何错误。