Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
函数不';php响应后无法工作_Php_Extjs - Fatal编程技术网

函数不';php响应后无法工作

函数不';php响应后无法工作,php,extjs,Php,Extjs,我收到一个ajax请求,向php文件发送一些数据: Ext.Ajax.request({ url: 'update.php', method: 'POST', success: function (){ alert("saved"); }, failure: function (){ alert("not saved"); }, params: { data: someData } }) 只有两行的update.php: <?php $

我收到一个ajax请求,向php文件发送一些数据:

Ext.Ajax.request({ 
    url: 'update.php', 
    method: 'POST',
    success: function (){ alert("saved"); },
    failure: function (){ alert("not saved"); },
    params: { data: someData }
})
只有两行的update.php:

<?php
    $res = array('success' => false);
    echo json_encode($res);
?> 

始终执行success函数。
有什么问题吗?

对于我来说,当请求出现问题时,应该调用函数failure。e、 g.如果服务器关闭或页面update.php不再存在。

Ext.Ajax.success
由于Ajax请求成功而执行。如果您重命名或删除update.php,它将执行
.failure
,因为它得到的是404。

您必须在
.success
中检查响应,或使update.php返回404。

success
在请求成功时被调用。你回复的数据是不相关的

请求失败时会调用
错误
回调。它没有失败,因此没有调用回调

分析成功回调中的结果数据以查看应用程序级逻辑:

Ext.Ajax.request({ 
    url: 'update.php', 
    method: 'POST',
    success: function (data){ alert(data.success ? "saved" : "not saved"); },
    failure: function (){ alert("request failed"); },
    params: { data: someData }
});

我假设
success
可以采用带有响应内容的参数;查看Ext的文档以了解情况。

如果我删除update.php,则会真正启动失败函数,但是否有一种方法可以使用php响应,如下面所示:确实如此@lvil,总是调用success函数的原因是因为您的请求总是成功的。不管你是否在其中加入了一些价值观,说“成功”是错误的。这个结果仍在被成功地返回给您,如果您想解释它,这取决于您。如果希望它像链接到的页面上的代码一样工作,那么必须使用链接到的页面上的代码——那里的success()函数解码来自服务器的响应数据并检查它(
…If(data.success==true).
),这在ExtJs中我一点都不喜欢。大多数情况下,我都会制作一个“jsonRequest”包装器,在json响应或HTTP错误中调用任何错误的“failure”回调。@Drasill:API都以几乎相同的方式执行此操作,我认为它们是正确的。您正在消除传输错误和逻辑错误之间的界限,使代码的模块化和自适应性大大降低。