我有一个输入框。一些 AJAX 请求会即时检查用户输入。然后用户会收到他/她的输入是否正确的通知。
提交后,必须再次检查输入是否具有与之前 AJAX 检查相同的特征(如果 JavaScript 已停用)。
AJAX 异步使用“check.php”。
<?php
include 'foo.php';
$input= $_POST['input'];
checkSomethingElse(testSomething($input));
?>
然后我得到一个在提交时被调用的“submit.php”文件。它检查输入,然后将输入写入数据库。
<?php
include 'foo.php';
$input= $_POST['input'];
checkSomethingElse(testSomething($input));
foo(){
//write input into Database}
?>
“foo.php”看起来像这样
<?php
function testSomething(){
//do something
}
function checkSomethingElse(){
//test...
echo value // e.g. echo "true"
return value // e.g. return true
?>
(例如验证和清理输入以及其他检查)
为了AJAX/JS/JQuery使用返回值,通过“echo”返回。
为了 PHP 使用返回值,它通过“return”返回。
在 AJAX 请求的情况下,一切都很好,因为它忽略了“return”并仅使用“echo”。对于 PHP,它使用“返回值”并打印出“回显值”。
所以问题是: 这个结构在逻辑上和功能上都可以吗?当用户不使用 JavaScript 时,我如何修复此代码以通过“echo”吐出字符串?
谢谢。
最佳答案
首先,我看到的第一个问题是您在 return 之后调用 echo ...这永远不会发生,因为函数的执行一旦到达 return 就会停止。
我建议只让你的函数返回一个值,然后确定你是否需要在之后回显它......
<?php
function some_function() {
return "value";
}
$value = some_function();
if (isset($_POST["returnajax"])) {
echo $value;
}
?>
正如@rm-vanda 所建议的那样 - 如果您正在处理需要 JSON 的 AJAX 请求,json_encode 可能对您有用。在这种情况下,它可能看起来像这样......
function some_function() {
return "value";
}
function some_other_function() {
return "another_value";
}
$values = array();
$values[] = some_function();
$values[] = some_other_function();
if (isset($_POST["returnajax"])) {
header("Content-Type: application/json");
echo json_encode($values);
}
生成的 echo 看起来像这样:
["value","another_value"]
不幸的是,您可能会发现 jquery 不喜欢格式不正确的 json。我通常做的是:
if (isset($_POST["returnajax"])) {
header("Content-Type: application/json");
echo json_encode(array("values"=>$values));
}
这会导致:
{"values":["value","another_value"]}
关于javascript - PHP 函数的返回如何看起来对 AJAX 和 PHP 使用有效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29369833/