簡體   English   中英

嘗試使用Ajax和PHP將JSON數據寫入txt文件

[英]Trying to write JSON data to a txt file using Ajax and PHP

我的項目是從用戶那里獲取輸入,並使用ajax和php將其以JSON格式寫入文本文件的末尾。 問題是php僅將時間和日期寫入文件的末尾,而沒有其他內容。 我從以前的帖子中摘取了示例,並出於我的目的在此處進行了修改。 這是html movie.html:

<html lang="en">
    <head>
        <meta charset="utf-8"/>
        <script src="movie.js" type="text/javascript"></script>
    </head>

    <body>
        <h1>
            <center>
                <input id="box" type="textbox"name="box" value="Enter Movie:"/>
                <input id="add" type="button" value="Submit" onClick="addStuff();" /></center>
        </h1>
        <div id="status" ></div>

        <h2>MOVIE NAME:</h2>

        <ul id="list" name="list">
            </ul>
        <div id="status"></div>
    </body>
</html>

這是movie.js文件,它通過Ajax發送數據:

function addStuff(){
var movie_name_entered = document.getElementById("box").value;
var movieList = document.getElementById("list");

var hr= new XMLHttpRequest();
var url= "movie.php";
hr.open("POST",url,true);
hr.setRequestHeader("Context-type","application/x-www-form-urlencoded");
var param = "film=" + movie_name_entered;
hr.setRequestHeader("Content-length", param.length);
hr.setRequestHeader("Connection", "close");
hr.onreadystatechange= function(){
    if(hr.readyState==4 && hr.status==200){
        var return_data=hr.responseText;
        console.log(hr.responseText);
        document.getElementById("status").innerHTML=return_data;
    }
}
hr.send(param);
document.getElementById("status").innerHTML = "processing...";
}

這是php(順便說一句,我在console.log中記錄了發送到php的數據,它是正確的):

<?php
if($_POST){
$data = $_POST["film"];
$file ='movie.txt';
$fp = fopen($file, "a");
$encoded = json_encode($data);
fwrite($fp, $encoded);
fclose($fp);    
return $encoded;}
?>

如上所述,該代碼僅將時間和日期寫入文本文件,而無論我做什么,僅此而已。 我測試了正在發送的數據,它是有效的$ _POST數據。 我不確定該如何進行。 任何坡道將不勝感激。 謝謝!

在movie.js中嘗試此代碼

function addStuff() {
    var movie_name_entered = document.getElementById("box").value;
    var movieList = document.getElementById("list");

    var hr = new XMLHttpRequest();
    var url = "movie.php";
    hr.open("POST", url, true);
    hr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    var param = "film=" + movie_name_entered;
    hr.setRequestHeader("Content-length", param.length);
    hr.setRequestHeader("Connection", "close");
    hr.onreadystatechange = function() {
        if (hr.readyState == 4 && hr.status == 200) {
            var return_data = hr.responseText;
            console.log(hr.responseText);
            document.getElementById("status").innerHTML = return_data;
        }
    }
    hr.send(param);
    document.getElementById("status").innerHTML = "processing...";
}

請更改您的PHP代碼到下面

if ($_POST) {
    $data    = $_POST["film"];
    $file    = 'movie.txt';
    $fp      = fopen($file, "a+");
    $encoded = json_encode($data);
    fwrite($fp, $encoded);
    fclose($fp);
    exit();
}

您將獲得一個空的$_POST變量,因此您的php代碼將永遠不會執行。 您的代碼有誤:

hr.setRequestHeader("Context-type","application/x-www-form-urlencoded");

它應該是Content-type ,將x替換為c :D

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM