使用ajax将JSON发送到PHP,使数据出现问题

时间:2013-12-02 20:36:03

标签: javascript php jquery ajax json

我的javascript不会进入我的Database.php文件。 谁知道什么是错的?

我知道这个问题有另一个主题,但它对我不起作用。

我在javascript中有这个

   var Score = 5;

//Score insert
        var postData = 
    {
        "Score":Score
    }
                $.ajax({
                          type: "POST",
                          dataType: "json",
                          url: "Database.php",
                          data: {myData:postData},                    
                          success: function(data){
                                alert('Items added');
                          },
                          error: function(e){
                                console.log(e.message);
                          }
                });         

这是在php

   function InsertScore(){  
    $table = "topscores";

    if(isset($_POST['myData'])){
     $obj = json_encode($_POST['myData']);

     $stmt = $conn->prepare("INSERT INTO " + $table + " VALUES (?)");
     $stmt->bind_param('s', $obj);
     $stmt->execute();
    }
    else{
        console.log("neen");
        }

    $result->close();

3 个答案:

答案 0 :(得分:5)

更改此行

success: function InsertScore(data){

到这个

success: function(data){

jquerys ajax方法的成功参数必须是匿名函数(没有名称)或者在javascript中定义的,但绝对不是php函数。

答案 1 :(得分:3)

您应该阅读variable scope,您的$table变量未在您的功能范围内定义。

你也有一个SQL注入问题,应该切换到带有绑定变量的预处理语句。

答案 2 :(得分:1)

您正在尝试将对象发送到PHP文件而不是JSON数据类型。 尝试2使用JSON2将对象字符串化为:

var scoreINT = 9000;
var usernameSTRING = "testJSON"

var scoreOBJ = {score:scoreINT,username:usernameSTRING};
var jsonData = JSON.stringify(scoreOBJ);

这会给你以下结果“{”得分“:9000,”用户名“:”testJSON“}”

如果你改变了(如果你遵循我的变量名称)你可以用你的AJAX发送它

data: {myData:postData}

data: {myData:jsonData}

这已经成功地将您的数据传输到PHP文件。

关于您的错误消息和未定义。消息“e.message”不存在。这就是你得到的“未定义”。不用担心。

我注意到错误地调用了成功和错误。我刚刚删除了它们,因为没有必要。

下一步。升级到你的PHP。

你宁愿喜欢“DECODE”然后编码你的编码JSON。 你可以在那里使用以下内容:

$score = json_decode($_POST['json'],true);

额外的参数是,所以你将数据放入一个数组(link) 或者你可以留下真实,所以你正在使用像你一样的物体。

问候 ySomic