2012-05-03 167 views
2

嗨,我想通過Ajax發送JSON到PHP使用Javascript。當我在firebug上查看數據時,index.html會正確發送數據。它顯示Json類型與正確的數據。 但是,似乎我無法閱讀php上的JSON。我無法使用$ _POST訪問它。 我試過使用$ _POST ['名稱']並沒有響應。 當我嘗試使用$ _POST時,響應是數組。 你能幫我嗎?傳遞JSON使用Ajax發佈通過JavaScript到PHP不工作

這是我的javascript代碼。

<html> 
<head> 
<script type="text/javascript"> 
    //Create Http request depending on browser 
    var xmlhttp; 
     if (window.XMLHttpRequest) 
      {// code for IE7+, Firefox, Chrome, Opera, Safari 
      xmlhttp=new XMLHttpRequest();} 
     else 
      {// code for IE6, IE5 
      xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");} 

    xmlhttp.onreadystatechange=function(){ 
     if (xmlhttp.readyState==4 && xmlhttp.status==200){ 
     document.getElementById("myDiv").innerHTML=xmlhttp.responseText;} 
     } 

    // Function to create 
    var url = "control.php"; 
    xmlhttp.open("POST",url,true); 
    xmlhttp.setRequestHeader("Content-Type", "application/json; charset=utf-8"); 
    var data=JSON.stringify({"name":"John", "time":"2pm"}); 
    xmlhttp.send(data); 
} 
</script> 
</head> 
<body> 
<h2>AJAX</h2> 
<button type="button" onclick="loadXMLDoc()">Request data</button> 
<div id="myDiv"></div> 
</body> 
</html> 

這是我的PHP代碼

<?php 
include_once('JSON.php'); 
$json = new Services_JSON(); 
$value = $json->decode($_POST['name']); 
echo $value; 
?> 

一直在這幾天,我真的很感激任何幫助,您可以提供。 謝謝!

+0

爲什麼不使用javascript庫? –

+0

使用jQuery.ajax();如果您使用Firefox的Firebug插件(Tab Console或Network)請求調查時遇到問題 – peipst9lker

+0

執行print_r($ _ POST),您將看到$ _POST全局變量是什麼。也許它會幫助你解決問題 –

回答

2

這裏是:

print_r($GLOBALS['HTTP_RAW_POST_DATA']); 
+0

嘿!非常感謝!這解決了我的問題。你能指點我一個文件,在這裏我可以讀到爲什麼$ GLOBALS ['HTTP_RAW_POST_DATA']在這種情況下工作?但儘管如此,非常感謝你們!你只是讓我的日子=) – shaoming

+0

你可以在這裏找到[PHP手冊](http://cn.php.net/manual/en/reserved.variables.httprawpostdata.php)。但我會做一些測試,如(print_r ($ GLOBAL),print_r($ _ SERVER))當我有這樣的問題。這是有幫助的。 :) –

1

我認爲它需要首先分析整個職位。

<?php 
include_once('JSON.php'); 
$json = new Services_JSON(); 
$value = $json->decode($_POST); 
echo $value; 
?> 

但是您是否也需要這些包括? http://www.php.net/manual/en/function.json-decode.php

include_once('JSON.php'); 
$json = new Services_JSON(); 

可以不只是你這樣做嗎?

echo json_decode($_POST) 
+0

嗨,感謝所有的評論和答案!我試着使用echo json_decode($ _ POST),正如你所建議的那樣,但是給出的響應是空白的。當我嘗試執行print_r($ _ POST)時,給定的輸出是arrray()。 – shaoming

0

一個更好的解決方案(見here)是使用:

$json = json_decode(file_get_contents("php://input"), true) ?: []; 
print_r($json);