gpt4 book ai didi

javascript - PHP 函数的返回如何看起来对 AJAX 和 PHP 使用有效?

转载 作者:行者123 更新时间:2023-11-30 10:05:31 25 4
gpt4 key购买 nike

我有一个输入框。一些 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com