AJAX failing silently
我的一个AJAX请求有问题。所有这一切都在早些时候工作,然后我在文件夹中移动了一些文件,它一定已经破坏了一些东西,但我一直无法弄清楚我的路径可能有什么问题。
怎么了
AJAX请求似乎被忽略了,没有任何东西进入控制台或网络选项卡,responseText是",我在PHP的第一行放置了一个从未被命中的断点。它直接从$.ajax到第一行在我的错误回调。另外,当直接到页面或cron调用此PHP代码时,它工作正常。
我之后有一个非常类似的调用,在同一文件夹中的另一个文件正常工作。
我试过了什么
如前所述,我查看了PHP中的responseText,控制台输出,网络选项卡和断点(从未到过),我查看了Google和stackoverflow。如果我故意将名称更改为不存在的文件,我会立即在控制台中收到错误。
代码如下
1 2 3 4 5 6 7 8 9 10 11 12
| $.ajax({
type:"POST",
url:"PHP/myFile.php",
data: '',
success: function () {
//Success code
},
error: function (xhr) {
var response = xhr.responseText; // response is""
//Error code
}
}); |
有任何想法吗?
这是代码,稍后在文件中,它(成功)从同一文件夹中的文件中获取代码。
1 2 3 4 5 6 7 8 9 10 11 12
| $.ajax({
type:"GET",
cache: false,
url:"PHP/myOtherFile.php",
dataType: 'json',
success: function (data) {
// Success code
},
error: function () {
// Error Code
}
}); |
非常基本的AJAX调用,不确定发生了什么:/
-
控制台里有什么东西?
-
在你的PHP文件?这是怎么回事?
-
传递给错误回调的其他两个参数的值是什么?
-
你有没有检查你控制台它给你的错误。
-
仅供参考,根据jQuery.ajax文档,"。fail()方法取代了不推荐使用的.error()方法。"
-
你可以把console.log(xhr.status);进入错误功能?
-
@Neal,完全没有控制台
-
你缺少数据类型吗?
-
@Jordan在网络标签中?
-
@Neal"没有任何东西进入控制台或网络选项卡"
-
@PhilNicholas他甚至没有使用.error
-
@dscdsc它xhr.status给了我0
-
@ j08691啊,由于某种原因没有看到。
-
删除data: '',并尝试使用type:"GET"。你没有传递任何东西,不需要发布也没有数据属性。
-
我看到你在做POST。如果您通过浏览器调用网址,则执行GET操作。确保你的php脚本在POST时是否正确
-
请澄清一些事情。你有没有得到错误回调?传递给错误回调的三个参数的值是什么? (应该是一个对象,一个状态代码和一个jQuery错误消息)。到目前为止,它听起来像是服务器错误或路径问题。你提供的jQuery代码没有任何问题。
-
很多评论Oo,试图跟上,我删除了data: ''行,我99%肯定我的PHP很好用一个帖子(考虑到我甚至没有发布任何参数供它使用),因为这过去几周一直在工作。
-
@KevinB嘿Kevin,是的,我正在进行错误回调,并且不是与xhr.status和xhr.responseText相同的状态码和错误消息?如果是这样,它们分别是0和""。我同意路径问题,我只是看不到当它与另一个文件(位于同一个地方(PHP文件夹)中工作正常时是怎么可能的)
-
状态是,但不是jquery错误文本,尽管它可能最终是"如果jQuery无法弄清楚问题是什么。
-
状态码0通常表示没有网络连接。你能不能看一下,我知道这是最不可能的事情。
-
@chumkiu奇怪的是,将它改为GET实际上使它工作,即使它已经使用POST几周了。知道为什么改变文件结构会导致这种情况吗?
-
你使用.htaccess文件吗?如果是这样你可以发布吗?
-
尝试使用错误:function(xhr,textStatus,errorThrown){...}
-
要么需要检查防火墙或htaccess文件,将文件移动到另一个文件夹并再次检查是值得的
-
好吧,我不知道该怎么告诉你们。我把它更改为GET,看看是否有效作为chumkiu建议,哪个有效。然后,我将其更改回POST以检查错误textStatus和errorThrown,并且...它工作正常。没有改变,只是POST,GET,然后回到POST O.o.
-
@Jordan完全取决于你的php文件。也许有一些线在POST上打破了一些东西
-
Boooooo,多么无聊的解决方案。这样的失望;)
-
对不起@ j08691;)如果它让你感觉更好,我也有点失望,有点希望弄清楚究竟造成了什么。
-
@Jordan某人早前在评论中建议0的状态意味着网络连接问题。这将完全解释为什么它继续工作 - 你只是在解决自己的网络中昙花一现
-
@Izkata我看到了,但这不会导致我的其他AJAX失败吗?我首先尝试在午餐前解决这个问题,然后出去吃午饭炖菜,问题仍然存在(仅针对此ajax请求)似乎网络问题似乎没有意义。除非我当然错误地思考它:P
-
请复制我制作的AJAX BASE代码并替换你的东西并检查你实际收到的内容:jsfiddle.net/RaphaelDDL/HAzbF(当然复制到你的项目,ajax将从jsfiddle失败,因为不返回jsonp的url) 。
Error callback is called on http errors, but also if JSON parsing on
the response fails
来自:Jquery ajax错误回调
从您的工作文件中,代码dataType: 'json'我盲目地假设您正在进行某种json解析。
尝试将"myFile.php"设置为一个简单的echo 'x';脚本,并检查响应文本。 如果你得到的东西,那么它是因为你的脚本包含JSON解析代码,但你还是没有将任何数据传递给脚本。
因此,将调用错误回调,因为脚本正在尝试JSON解析任何内容(即data: '')
我不能通过阅读你的问题描述提出任何建议,希望其他人能够明白这一点。 祝好运
-
这两个文件现在都在工作,但是那个问题实际上没有任何类型的json解析,只是数据库操作。 感谢您抽出宝贵时间考虑一下!
-
啊,很高兴听到它的工作