Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/76.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中使用die()返回ajax值_Php_Jquery_Ajax - Fatal编程技术网

在PHP中使用die()返回ajax值

在PHP中使用die()返回ajax值,php,jquery,ajax,Php,Jquery,Ajax,有没有理由不使用die($result)在PHP中返回Ajax请求结果?请注意,这是一个关于代码语义的理论问题 简单的例子(当然函数可能非常复杂,并且返回不同的值) JS: 功能检查登录(登录){ $.post('/ajax/check',{'login':login},函数(res){ if(res==1)返回1;否则返回0; } } PHP: 另外,我知道mysql_*()函数已经被弃用了,不需要评论。我只是喜欢使用它们,并且会尽可能地使用它们 编辑: 我想知道为什么没有人注意到ch

有没有理由不使用
die($result)
在PHP中返回Ajax请求结果?请注意,这是一个关于代码语义的理论问题

简单的例子(当然函数可能非常复杂,并且返回不同的值)

JS:


功能检查登录(登录){
$.post('/ajax/check',{'login':login},函数(res){
if(res==1)返回1;否则返回0;
}
}
PHP:


另外,我知道
mysql_*()
函数已经被弃用了,不需要评论。我只是喜欢使用它们,并且会尽可能地使用它们

编辑:

我想知道为什么没有人注意到
checkLogin()
函数没有意义,因为请求是异步的,并且函数总是返回
undefined
;-)

因为
die()
不发送任何
HTTP
错误状态,所以使用它为ajax调用返回字符串没有问题,但这里要说的是,对于代码的可读性,我认为这不是一个好主意,但除此之外,对于功能,它没有问题,因为它输出消息。 但是,也就是说,您必须考虑像
CLI PHP
这样的情况,在这种情况下,返回的整数对shell来说确实有意义(仅供参考)。

由于
die()
不发送任何
HTTP
错误状态,因此使用它为ajax调用返回字符串没有问题,但这里要说的是,对于代码的可读性,我认为这不是一个好主意,但除此之外,对于功能性,它没有问题,因为它输出消息。
但是,也就是说,您必须考虑像
CLI PHP
这样的情况,其中返回的整数对shell来说确实有意义(仅供参考)。

我想说,不,您不想这样做。它不是用来向ajax调用返回某些内容的,它相当于
exit()
,您可以给它一个状态

虽然这只是一种观点,但它确实与语义有关:它不是用来作为一种
echo
,所以不要把它当作一种

事实上,您可以让它“返回”一个整数(如中所示,这是可行的),但如果您输入255,它将不会返回,因为它是保留的,这使得它很棘手且不可读


<>当然,在语法上,它对诸如“代码> 0”/代码>等工作,使用一种语言结构来返回任意的消息会被认为是不好的形式,因为它不能返回所有的消息。

我会说,不,你不想这样做。它不是用来向ajax调用返回某些内容的,它相当于
exit()
,您可以给它一个状态

虽然这只是一种观点,但它确实与语义有关:它不是用来作为一种
echo
,所以不要把它当作一种

事实上,您可以让它“返回”一个整数(如中所示,这是可行的),但如果您输入255,它将不会返回,因为它是保留的,这使得它很棘手且不可读


<>当然,在语法上它对诸如“代码>'0' < P>是的,有一个问题。在你太简单的情况下,不,但是想象一下:

die($Result);
那会怎么样由于您不知道$Code的类型,因此您不知道这将做什么。正如汉克指出的,如果它是一个整数,它不会打印任何东西。因此,您有一行代码,根据
$Result
的不同,它们的行为会有所不同。这似乎很容易发生

PHP文档:

    Note: PHP >= 4.2.0 does NOT print the status if it is an integer.
更好的解决方案是改善流量控制:

if ($this_is_NOT_an_ajax_call) {
  // Do what you need to do
  }
else {
  echo $Result;
  }

是的,有个问题。在你太简单的情况下,不,但是想象一下:

die($Result);
那会怎么样由于您不知道$Code的类型,因此您不知道这将做什么。正如汉克指出的,如果它是一个整数,它不会打印任何东西。因此,您有一行代码,根据
$Result
的不同,它们的行为会有所不同。这似乎很容易发生

PHP文档:

    Note: PHP >= 4.2.0 does NOT print the status if it is an integer.
更好的解决方案是改善流量控制:

if ($this_is_NOT_an_ajax_call) {
  // Do what you need to do
  }
else {
  echo $Result;
  }

我认为这主要是一个偏好问题。然而,您的代码在这里实际工作吗<代码>模具(1)将设置退出代码,而不是实际输出
1
@hank Good point。edited.BTW我喜欢态度
mysql_*()函数被弃用,不需要评论有人将问题标记为基于意见。我问的不是意见,而是可能出现的问题。如果我知道会出现什么样的问题,我不会问这个问题。汉克已经证明,这个问题很有用。我自己不会注意到这个错误。我认为res是String-use-if(res=='1')类型,我认为这主要是一个偏好问题。然而,您的代码在这里实际工作吗<代码>模具(1)
将设置退出代码,而不是实际输出
1
@hank Good point。edited.BTW我喜欢态度
mysql_*()函数被弃用,不需要评论有人将问题标记为基于意见。我问的不是意见,而是可能出现的问题。如果我知道会出现什么样的问题,我不会问这个问题。汉克已经证明,这个问题很有用。如果(res=='1')我不同意可读性,我认为res是String-use类型。这就像从函数中返回。当然,在某些情况下,这不是一个好主意,但对于简单的ajax函数,它似乎比echo()更好;模具();或者当我们不需要做任何其他事情时,创建一些变量以在最后返回它。但是
+1
当然。如果页面有简单的运行功能,那么你完全是在写,但是我说的是完全一般的。这是一个很好的回答