$ _POST未使用AJAX Post值设置

时间:2015-01-25 13:38:18

标签: php jquery ajax post

我正在尝试将JSON对象发送到.php文件。令我烦恼的是我的POST值似乎没有进入PHP的$ _POST数组。这是我的代码:

jQuery的:

$("#submit").click(function(){
    var obj = { //create json object to be sent
        "name": $("#name").val(),
        "email": $("#email").val(),
        "r1": $("#r1").val(),
        "r2": $("#r2").val(),
        "r3": $("#r3").val(),
        "intr1": $("#q1").val(),
        "intr2": $("#q2").val(),
        "intr3": $("#q3").val(),
        "set": "set1"
    };

    var jsonObj = JSON.stringify(obj);

    $.post(
        "updateAnswers.php",
        jsonObj,
        function() {
            //location.href = 'set2.php';
        }
    );
})

PHP:

if (isset($_POST["jsonObj"])) { // value is empty
    $obj = json_decode($_POST['jsonObj'], true);

    $name = $obj['name'];
    $email = $obj['email'];

    $db = mysqli_connect("localhost", "root", "", "concurs");
    $sql="INSERT into players values ('$name', '$email', '0', '0', '0')";
    mysqli_query($db, $sql);
}

提前致谢!

3 个答案:

答案 0 :(得分:0)

您在obj上使用stringify,然后将其传递给ajax函数。 但是ajax函数期望对象作为对象而不是字符串。 因此,只需删除var jsonObj = JSON.stringify(obj);,然后使用obj

即可

更进一步,你必须检查

  • 名称
  • 电子邮件
  • R1
  • ...

在您的php脚本中而不是jsonObj,因为这就是php从您的脚本中实际获得的内容

答案 1 :(得分:0)

  1. 我认为您不需要对obj进行字符串化 - 尝试将obj直接传递给$.post函数。
  2. $.post("updateAnswers.php", obj, function() {
            //location.href = 'set2.php';
    });
    
    1. 在PHP方面,值nameemailr1等等将直接位于$_POST数组中..因此您需要访问$_POST['name']等等。
    2. echo "Name: ". $_POST['name']; //Show name value
      var_dump($_POST); //Show all passed values
      
      1. 您的$sql字符串不检查SQL注入。您必须(至少)用两个单引号替换单引号,如:
      2.  $sql = "INSERT into players values ('".str_replace("'","''", $name). "', '".str_replace("'","''", $email). "', '0', '0', '0')";
        

答案 2 :(得分:0)

这与AJAX()发送:

$.ajax({
   type: 'POST',
   url: 'updateAnswers.php',
   data: {'jsonObj': jsonObj},
   success: function(msg) {
     alert(msg);
   }
});
相关问题