在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
当然。如果页面有简单的运行功能,那么你完全是在写,但是我说的是完全一般的。这是一个很好的回答