【问题标题】:Passing my Javascript Variable to PHP using Ajax使用 Ajax 将我的 Javascript 变量传递给 PHP
【发布时间】:2016-08-28 01:34:43
【问题描述】:

我正在尝试获取我的 Javascript 变量并使用 AJAX 将其传递给 PHP 变量,以便我可以更新我的 SQL。目前正在调用该函数,但 AJAX 并未将数据发送到 PHP.php。

代码更新:

function placeData(){
        //Variable is caled and input is updated//
        var hour1Data = document.getElementById("hourDataInput").value;
        document.getElementById("hour1").innerHTML = hour1Data;

        //Launch AJAX//
        $.ajax({
            type: "POST",
            url: "PHP.php",
            data: {hour1Data: "hello", loginName: <?php echo $_POST['loginName'] ?>},
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function(result){
                alert(result.d);
                console.log(result);
            }
        });
    }

//php.php

 if(isset($_POST['hour1Data']))
        {   
            echo "something is working"; 
            print_r($_POST); //Check the values here first
            $hour1Data = $_POST['hour1Data'];
            $sql = "UPDATE `$user` SET `$dateName`='$hour1Data' WHERE hour=1";
            if ($conn->query($sql) === TRUE) {
            echo "Record updated successfully";
            }
            else {
                echo "problem adding value";
            }
        }

【问题讨论】:

  • 清理您的输入,您对 SQL 注入持开放态度。你打的网址正确吗?你能用你的浏览器开发工具检查请求返回什么吗?
  • “application/x-www-form-urlencoded”应该是“application/x-www-form-urlencoded”(form和encoded之间没有空格)
  • 嗨本杰明,问题在于你的 js 代码而不是 PHP。您可以将此链接用于参考:w3schools.com/jquery/ajax_ajax.asp
  • 这是一个小应用程序,我只是为了练习而制作的。它永远不会被公众使用。我只是想利用我学到的东西,所以我现在不用担心安全问题。
  • 如果你删除空间“application/x-www-form-urlencoded”它工作正常

标签: javascript php jquery ajax


【解决方案1】:

代码如下:

$.ajax({
    type: "POST",
    url: "PHP.php", //Check the url 
    data: {hour1Data: 1, loginName: "testUser"},
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: function(result){
        alert(result.d);
        console.log(result);
    }
});

php代码:

 if(isset($_POST['hour1Data']))
            {   
                echo "<pre>"; 
                print_r($_POST); //Check the values here first
                $hour1Data = $_POST['hour1Data'];
                $sql = "UPDATE `$user` SET `$dateName`='$hour1Data' WHERE hour=1";
                if ($conn->query($sql) === TRUE) {
                echo "Record updated successfully";
                }
                else {
                    echo "problem adding value";
                }
            }

【讨论】:

  • 从他发布的内容来看,OP 不使用 JQuery。他正在努力学习,纯 js 解决方案会是一个更好的答案。您能否编辑您的答案以添加它(为了完整起见)?
  • 其实你的答案很好。我不知道有更简单的方法。但是由于某种原因,它仍然不起作用。我会更新我的代码。
【解决方案2】:

删除 contentType,因为 $_POST 用于表单编码的内容类型。您可以在此处查看已发布的问题以供参考 -

Ajax call with contentType: 'application/json' not working

注意您在 Ajax 请求中期望的数据类型以及 PHP 文件返回的数据类型也很重要。把error回调,这样你就知道错误响应是什么了。

希望对您有所帮助。

【讨论】:

    猜你喜欢
    • 2011-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-05
    • 2014-04-15
    • 2014-04-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多