2015-12-19 73 views
4

我在Javascript中執行HTTP Post請求以更新JSON文件。PHP中的HTTPPost到JSON

function updateJson(dataNew){ 
    var stringData = JSON.stringify(dataNew); 
    $.ajax({ 
    type: 'POST', 
    contentType: 'application/json; charset=utf-8', 
    url: 'update.php', 
    data: {stringData}, 
    success : function(d){ 
     alert('done');} 
    }) 
} 

然後在PHP:

<?php 
    $a = json_encode(file_get_contents("php://input")); 
    file_put_contents('newData.json', $a); 
?> 

我想在JSON文件JSON數據然而,JSON文件僅包括單個串是類似於HTTP POST的請求負載。我究竟做錯了什麼?

回答

3

我建議通過在數據對象的鍵/值對,並留下的contentType屬性爲默認值(刪除),如:

$.ajax({ 
    ... 
    data: {myjson: stringData}, 
    ... 
); 

然後在PHP你應該閱讀發佈的數據和拿到myjson元素,而無需再次對其進行編碼,因爲它已經是JSON:

<?php 
    $a = $_POST['myjson']; 
    file_put_contents('newData.json', $a);   
?> 
+0

我已經嘗試過了,但現在的JSON文件是空的。這意味着$ _POST ['myjson']是空的嗎? – Titsjmen

+0

你調試過了嗎?你可以把'var_dump($ _ POST)'放在你的PHP開頭,看看你實際得到了什麼。爲此,您最好將alert(「done」)改爲alert(d),以便了解PHP輸出的內容。 – trincot

+0

「未定義的索引:myjson in update.php」這可能是問題所在,但由於我的發佈請求包含:'data:{myjson:stringData},' – Titsjmen