2012-11-01 92 views
2

好了,所以這是我的Ajax請求:jQuery的AJAX發送JSON到PHP錯誤

$("#scoreForm").submit(function(e){ 
    e.preventDefault(); 
    var nickName = $('#nickName').val(); 
    var gameScore = parseInt($('#gameScore').text()); 
    var result = { 'result' : '{ "nick":"'+nickName+'", "score":'+gameScore+' }' }; 
    //var result = { "nick":nickName, "score":gameScore }; 
    $.ajax({ 
     url: "http://localhost:8888/snake/addScore.php", 
     type: "POST", 
     data: result, 
     //dataType: "jsonp", 
     success: function(data){ 
      alert("siker"); 

     }, 
     error: function(jqXHR, textStatus, errorThrown) { 
      alert("bukta " + textStatus); 
      //console.log(data); 
     } 
    }); 
    return false; 
}); 

和我的PHP程序代碼:

$json_decoded = json_decode($_POST['result'],true); 
//$nick = $_GET['nick']; 
//$score = $_GET['score']; 

$mysqli = new mysqli("localhost", "root", "root", "snake",8889); 
//$mysqli->query("INSERT INTO scores(nickName,score) VALUES('".$nick."', ".$score.")"); 
$mysqli->query("INSERT INTO scores(nickName,score) VALUES('".$json_decoded['nick']."', ".$json_decoded['score'].")"); 

echo "true"; 

現在,我得到的數據插入到數據庫中,但阿賈克斯仍然發射錯誤事件。我讀到,如果我將數據類型設置爲jsonp,它會走低谷,但然後我得到解析錯誤,我怎麼能通過?

+1

您得到了什麼錯誤? –

+2

總是逃避你的SQL插入!!!!!! – Svetoslav

+0

我只是第一次嘗試的東西,不要擔心:) –

回答

4

Wehn你訪問你的PHP腳本中的$ _ POST變量,你需要參考他們,他們被打包爲JSON對象的方式:如果要參考的項目,如$ _ POST

$_POST['nick'] 
$_POST['score'] 

['結果']並使用您的json解碼方法,您需要按照以下方式打包:

var result = { result : { "nick":nickName, "score":gameScore } }; 
+1

並沒有必要使用json_decode 2次:) – Svetoslav

+0

優秀的點和我錯過了。除了非常罕見的情況,你不應該兩次json_decode你的輸入 – user1026361

+0

沒問題,所以nick和score與post相分離,它可以工作,但是我仍然在ajax上返回錯誤,但是它插入到數據庫中。 第二種方法與json_decode,沒有任何工作,甚至插入失敗。爲什麼? –