我有以下代码
<?php
$token = '';
if(!empty($_POST['token'])) $token = $_POST['token'];
$url = '';
if(!empty($_REQUEST['url'])) $url = Sanitize($_REQUEST['url']);
if(!filter_var($url, FILTER_VALIDATE_URL)) return 'erro1';
?>
这个页面应该由AJAX执行,所以我编码错误代码,现在如果URL无效,我希望它返回erro1
问题是,它永远不会返回erro1
。我尝试转储filter_var的结果,它是false
正如预期的那样!即使URL无效,该页面也只是执行并且不返回任何内容,但是如果我使用echo切换返回,则它会起作用。
为什么? 为什么echo工作但没有返回?
答案 0 :(得分:4)
您需要使用echo
代替return
。您的Web服务器执行PHP代码并提供其使用echo
和其他打印功能生成的输出。
在函数之外,return
interrupts脚本。
答案 1 :(得分:3)
return
会将函数中的值返回给调用该函数的代码。它只能在PHP内部使用。
您的return
声明不在函数中。
要将数据写入JavaScript可以读取的HTTP响应,您需要使用echo
,print
或类似内容。