2014-07-02 102 views
0

我不會創建JSON文件並使用php腳本進行保存。我得到這個錯誤消息(火狐)將JSON寫入文件

NS_ERROR_XPC_JSOBJECT_HAS_NO_FUNCTION_NAMED:JavaScript組件沒有命名的方法:「可用」「JavaScript組件沒有命名的方法:‘可用’」調用方法時:[nsIInputStream ::可用]

當我使用Chrome瀏覽器時,我沒有收到錯誤消息,但它不起作用。

的JavaScript:

var jsonString = '{ "foo": 1, "bar": { "baz" : 1 } }'; 
var data = JSON.parse(jsonString); 
var xhr = new XMLHttpRequest();  
xhr.open('POST', './php/upload.php', true); 
xhr.send(data); 

PHP:

$dateiname = "test12345.json"; 

if (isset($_POST) && count($_GET)==0) { 

    $jsonObj = $_POST; 
    $fh = fopen($dateiname, 'w'); 
    $input = json_encode($jsonObj); 
    fwrite($fh, $input); 
    fclose($fh); 
} 
+1

錯誤告訴你,你正試圖調用一個名爲「available」的函數,但它不存在。在您提供的Javascript中,沒有提及此功能,因此您需要找到它並將其添加到您的問題中。 –

+0

這與PHP無關。這純粹是一個客戶端JavaScript問題。 –

+0

嘗試做'xhr.send(JSON.stringify(data))' - 從這裏爲類似問題工作的解決方案http://stackoverflow.com/questions/15772920/firefox-exception-javascript-component-does-not -have-a-method-named-available – dave

回答

0

的JavaScript應該使用:

xhr.send(jsonString); 

,因爲要發送的數據必須是一個字符串,而不是一個對象。

在PHP中,讀取原始數據後,你應該使用:

$rawjson = file_get_contents("php://stdin"); 
$jsonObj = json_decode($rawjson); 

$_POST只能用於目前正使用URL編碼或編碼multipart/form-data格式化表格數據。