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

标签 javascript php jquery html ajax

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

相关文章:

javascript - 为什么允许某些 `file://` 提取调用而其他的是 'Cross-Origin Request Blocked' ?

PHP 执行 python 不工作

php - Phing 未加载 .properties 文件

javascript - 使用jquery确定高度:auto and applying it to another div

javascript - 使用 jquery 获取的 url 参数扩展 Accordion 菜单并将 attr 添加到所需的类

javascript - 单选按钮检查用户交互

javascript - 在不同层次结构级别的两个 React 组件之间建立链接的好方法是什么?

javascript - 使用 JavaScript 函数和复选框的 Google 表格

php - 由于 E_WARNING,我是否需要在 PHP 中尝试/捕获 opendir?

javascript - 连续显示文字