AJAX 测试不起作用

ajax test not working

本文关键字:不起作用 测试 AJAX      更新时间:2023-09-26

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

索引.php:

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

脚本.js:

function sum(param) {
    var sum = 3;
    sum = 3 + param;
    $.ajax({
        type: 'POST',
        url: 'index.php',
        data: {
            'variable': sum
        },
    });
}

由于某种原因,此代码不起作用。任何帮助,不胜感激。

我希望 php 文件将 $add 1 传递给 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;
}

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>";
}
?>

爪哇语

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);
        }
    });
}