【问题标题】:ajax test not workingajax 测试不工作
【发布时间】:2015-06-15 06:11:49
【问题描述】:

我试图让一个简单的 ajax 测试工作但没有成功。我正在尝试将变量($add1)从 PHP 传递给 JS,然后让 JS 计算总和并通过 $_POST 将其返回给 PHP 变量,并在 html 中将其 ECHO。

index.php:

<?php 

echo "<script type='text/javascript' src='script.js'></script>";
$add1 = 3;
echo "<script>sum($add1)</script>";
$sum = $_POST['variable'];

echo $sum;

?>

script.js:

function sum(param) {
    var sum = 3;
    sum = 3 + param;

    $.ajax({
        type: 'POST',
        url: 'index.php',
        data: {
            'variable': sum
        },
    });
}

由于某种原因,此代码不起作用。任何帮助表示赞赏。

【问题讨论】:

  • 那么问题出在哪里?
  • 您在console 中看到任何错误吗?
  • 你正在混合前端代码和后端代码
  • @Tushar:我在第 5 行收到“ReferenceError: $ is not defined”(“$.ajax”)
  • $ 未定义 - 不包括 jQuery 参考。

标签: javascript php jquery ajax


【解决方案1】:

我希望 php 文件将 $add1 传递给 Javascript,然后我希望 javascript 将 var sum 返回给 php,并且 php 从 $POST 回显 $sum。

$_POST 中的$sum 实际上被回显,但没有显示在 HTML 页面中,而是作为对 Ajax 的响应处理。

你必须在 Ajax 闭包中添加一个success 函数

$.ajax({
        type: 'POST',
        url: 'index.php',
        data: {
            'variable': sum
        },
        success: function (data){
            document.write(data);
        }
    });

您将在页面中看到答案。

php:

if (isset($_POST['variable'])) {
    $sum = some_futher_function($_POST['variable']);
    echo $sum;
} else {
    echo "<script type='text/javascript' src='script.js'></script>";
    $add1 = 3;
    echo "<script>sum({$add1})</script>";

}
function some_futher_function($param){
    //do some thing
     return $return;
}

【讨论】:

  • 我如何在 php 中回显答案??
  • 你的目的是什么?只是在页面中显示还是在 PHP 中做进一步的功能处理?
  • 好吧,我想在 php 中做进一步的功能处理(php 中的一些计算没问题,因为 $sum 正在填充来自 JS 的值),最后我想在 php 中回显它在 html 中可见。
  • 我知道,正如我告诉你的,答案是作为对 Ajax 的响应处理的,所以你应该在页面中使用 success 函数中的 JavaScript 代码显示,等待我几分钟,我会编辑我的回答。
  • 但是输出发生在 JS 中。我只希望输出发生在 PHP 中。使用“响应 ajax”实际上是指 PHP 将我的“回声”发送回 ajax,然后在成功 fct() 中回显? 所以如果我理解正确:成功 fct() 中的 document.write 会从 php 中打印出“回复”,这实际上是 PHP 变量 $sum??
【解决方案2】:

在您的script 之前将其包含在您的页面上。

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>

PHP 代码

<?php 

if ($_POST['variable']) { // If ajax request only
    $sum = $_POST['variable'] + $add1;
    echo $sum;
} else { // Loading in the browser
    $add1 = 3;
    echo '<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script><script type="text/javascript" src="script.js"></script>';

    echo "<script>sum(".$add1.")</script>";
}
?>

Javascript

function sum(param) {
    var sum = 3;
    sum = 3 + param;

    $.ajax({
        type: 'POST',
        url: 'index.php',
        data: {
            'variable': sum
        },
        success: function(result) {
            alert(result)
        },
        error: function(e) {
            console.log(e);
        }
    });
}

【讨论】:

  • 谢谢,工作就像一个魅力。你能解释一下你在 if() 中做了什么吗? if ($_POST['variable']) { $sum = $_POST['variable'] + $add1; echo $sum;
  • 它仍然无法正常工作。我希望 php 文件将 $add1 传递给 Javascript,然后我希望 javascript 将 var sum 返回给 php,并且 php 从 $POST 回显 $sum。
猜你喜欢
  • 2012-04-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-13
  • 2017-09-20
  • 2016-11-20
  • 1970-01-01
相关资源
最近更新 更多