2017-05-09 141 views
1

我有一個基本的表單,其中包括一個input和一個提交button。我希望將input的值轉換爲JSON,然後將JSON放置在服務器上的文件中以供稍後使用。我正在使用AJAX和一個小的PHP腳本來處理數據和文件創建,但從未創建JSON文件(test.json)。用PHP創建.JSON文件

HTML標記

<input id="title" type="text" name="title" value="Page Title"/> 
<button type="submit" value="submit" id="submit">Submit</button> 

JS

var submit = $('#submit'); 
var title = $('#title'); 

function createJSON() { 
    var jsonObj = []; 
    title.each(function() { 

     var value = $(this).val(); 
     var item = {}; 
     item.title = value; 
     jsonObj.push(item); 
    }); 

    $.ajax({ 
     url:  "create-file.php", 
     data: { 
      data: jsonObj 
     }, 
     type: "POST" 
    }); 
} 

submit.on('click', function() { 
    createJSON(); 
}); 

PHP(創建-file.php)

<?php 
    $json = $_POST['data']; 
    $info = json_encode($json); 
    $file = fopen('test.json','w+') or die("File not found"); 
    fwrite($file, $info); 
    fclose($file); 
?> 

JSON

[ 
    { 
     title: "Page Title" 
    } 
] 
+0

你做了什麼錯誤? –

+0

@AlivetoDie我沒有收到錯誤。該腳本創建JSON罰款,它通過AJAX調用傳遞,然後什麼都沒有。 – Ryan

+0

必須有錯誤。您確定腳本位置內沒有創建文件嗎? –

回答

1

您在PHP有data: {data: jsonObj},所以必須: -

$json = $_POST['data']; 

添加一些錯誤的PHP頁面報告也使您將獲得有關error.when都解決了所有的錯誤,然後評論這些線路的詳細信息。

做象下面這樣: -

<?php 
    //comment these two lines when errors are resolved 
    error_reporting(E_ALL); 
    ini_set('display_errors',1); 

    $json = $_POST['data']; //json need to be data 
    $info = json_encode($json); 
    $file = fopen('test.json','w+') or die("File not found"); 
    fwrite($file, $info); 
    fclose($file);exit; 
?> 

我已經檢查了它和它的工作在我的本地端

注: - 你有title.each(function() {哪裏title = $('#title');

在未來,如果你有一個以上的文本框更多然後轉換idclass這樣的: -

<input class="title" type="text" name="title" value="Page Title"/> 
+0

是的,我愚蠢的'$ _POST'錯誤已被糾正,但現在JSON文件包含'null',而沒有其他的東西? – Ryan

+0

工作 - 感謝'id'上的領導! – Ryan

+0

@Ryan很高興幫助你:) :) –

1

嗨你需要寫類似下面的代碼:

$json = $_POST['data'];//$_POST['json'];  
$info = json_encode($json);  
$file = fopen('test.json','w+') or die("File not found"); 
fwrite($file, $info); 
fclose($file); 
die; 

它會像文件test.json寫JSON [{「稱號」:「頁面標題」}]

+0

謝謝。這有助於我的傻$ _POST ['data']'錯誤,但寫入的文件包含'null'而不是JSON輸出。 – Ryan