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

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

简单的例子(当然函数可能很复杂并返回不同的值)。

JS:

  function checkLogin(login){ $.post('/ajax/check',{'login':login},function(res){ if(res == 1) return 1; else return 0; } }  

PHP:

  

PS。 我知道不推荐使用mysql_*()函数,不需要注释。 我只是喜欢使用它们而且愿意。 只要有可能。

编辑:

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

由于die()不会发送任何HTTP错误状态,因此使用它来返回ajax调用的字符串没有问题,但是为了代码的可读性,我不认为它是好的想法,但除此之外,对于function,它没有问题,因为它输出消息。 而且,现在已经说过了,你必须考虑像CLI PHP这样的情况,其中返回的整数对于shell来说真的意味着什么(仅仅是为了提及)。

我会说不,你不想这样做。 不能将某些东西返回到ajax调用,它等同于exit() ,你可以给它一个状态。

这只是意见,但它确实与语义有关:它并不意味着用作一种echo ,所以不要把它当作一个。

事实上,你可以让它’返回’一个整数(如同,有效),但是如果你输入255就不会因为它被保留而使它变得棘手且难以理解。

所以可以肯定的是,虽然语法上它适用于像'0'这样'0'值,但是它会认为使用语言结构返回任意消息是不好的forms,因为它不能返回所有消息。

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

 die($Result); 

这会怎么样? 你不知道它会做什么 ,因为你不知道$ Code的类型。 正如汉克所指出的,如果它是一个整数,它将不会打印任何东西。 所以你有一行代码,根据$Result不同。 它似乎很容易受到heisenbugs的影响 。

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; }