【问题标题】:PHP + Jquery - pass value through ajax to php and check against variablePHP + Jquery - 通过 ajax 将值传递给 php 并检查变量
【发布时间】:2010-11-18 18:10:45
【问题描述】:

我无法让下面的 PHP + jQuery 工作 - 我想要脚本做的只是通过 ajax 传递值,然后让 php 抓取它,检查它是否匹配并加 1 得分。

这是我写的代码:

<?php
$score = "1";

$userAnswer = $_POST['name'];

if ($_POST['name'] == "145"){
    $score++;
}else{
    //Do nothing
}

echo $score;

?>


<script type="text/javascript">

$(document).ready(function() {

    $("#raaagh").click(function(){

    var value = "145";

    alert(value);

    $.ajax({
        url: 'processing.php', //This is the current doc
        type: "POST",
        data: ({name: value}),
        success: function(){
            location.reload();
       }
    });


    });
});

</script>

<p id="raaagh">Ajax Away</p>

感谢您的帮助,我在这两种情况下都将 GET 更改为 POST,但并不高兴 - 还有其他问题。

【问题讨论】:

  • 究竟是什么问题?
  • 没有描述问题的问题很难回答。 “它不起作用”不是一个足够好的描述。

标签: php jquery ajax


【解决方案1】:

首先:不要回到黑暗时代...不要使用相同的脚本来生成 HTML 和响应 ajax 请求。

我无法理解您要做什么...让我更改您的代码,使其至少有意义并记录正在发生的事情。似乎问题在于您正在从成功处理程序调用 location.reload。

// ajax.php - 如果 name 参数为 145,则输出 2,否则输出 1 (????)

<?php
$score = "1";    
$userAnswer = $_POST['name'];    
if ($_POST['name'] == "145"){
    $score++;
}       
echo $score;    
?>

// test.html

<script type="text/javascript">  
$(document).ready(function() {    
    $("#raaagh").click(function(){    
        $.ajax({
            url: 'ajax.php', //This is the current doc
            type: "POST",
            data: ({name: 145}),
            success: function(data){
                // Why were you reloading the page? This is probably your bug
                // location.reload();

                // Replace the content of the clicked paragraph
                // with the result from the ajax call
                $("#raaagh").html(data);
            }
        });        
    });
});

</script>

<p id="raaagh">Ajax Away</p>

【讨论】:

  • 你刚刚让我头疼不已 - 我仍在使用自动重新加载的东西,所以这不是错误 - 但任何其他更改都已修复它。谢谢!
  • “其他发生了什么变化”是因为您现在没有为 ajax 调用输出页面的 html 部分。
【解决方案2】:

您在 jQuery 中使用 POST,但您尝试在 php 中获取 GET。

顺便说一句,最好在读取之前检查是否设置了 GET/POST 变量。 使用isset() 函数。

【讨论】:

    【解决方案3】:

    $_GET 替换为$_POST 即可。 基本上 POST 和 GET 是将变量传递给脚本的两种不同方式。 php 中的 get 方法也可以附加在 url 的末尾:script.php?variable=value,它真的很容易破解。虽然 post 方法可以通过表单或 ajax 调用提交,而且非常安全,至少比 get 方法更安全。 另外,我建议您在调用之前检查设置的 GET 或 POST 变量,以防止出现愚蠢的通知错误。

    只需使用以下代码:

    if (isset($_POST['var']) and !empty($_POST['var'])) { // do something } 
    

    你也可以删除

    }else{
    // do nothing
    }
    

    脚本的一部分,因为 else 子句并不总是需要。

    【讨论】:

    【解决方案4】:

    您正在使用 Ajax POST 提交数据,但尝试从 GET 中读取数据。在 Ajax 调用中使用 type: "GET" 或在 PHP 中使用 $_POST['name']

    【讨论】:

      【解决方案5】:

      问题是您使用 jQuery 发布您的值,但您正在使用 GET 读取它。

      您应该能够通过将 $_GET['name'] 更改为 $_POST['name'] 来解决您的问题

      【讨论】:

        猜你喜欢
        • 2015-04-28
        • 1970-01-01
        • 2023-03-09
        • 2013-03-05
        • 1970-01-01
        • 1970-01-01
        • 2018-12-15
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多