簡體   English   中英

如何使用jQuery.post將JSON數據發送到php腳本?

[英]How do I use jQuery.post to send JSON data to a php script?

這是在我的JavaScript代碼中。 變量dataStore是有效的JSON對象,並且JSON.stringify可以正常工作-我確實使用console.log()進行了測試。

我是jQuery的新手,已經有一段時間沒有編寫CGI應用程序了,所以我在這里可能做錯了什么。

jQuery.post("taskmanager.php", JSON.stringify(dataStore), function (returnData) { 
    alert(returnData); 
});

taskmanager.php腳本與其他文件(taskmanager.html,taskmanager.css,taskmanager.js)位於同一文件夾中。 該文件夾位於我的Windows7文件夾E:\\ JamesLaderoute \\ MySoftware \\ WebApp \\ TaskManager \\ code

我不確定要在taskmanager.php腳本中放什么。 我以為我可以做一些簡單的事情,例如:

<?php

    $data = $_GET["data"];

    echo "done";

?>

我不明白的是,PHP腳本如何知道我的JSON字符串化信息稱為“數據”。

另外,我以為jQuery.post()將腳本名稱作為第一個參數,然后將要發送到腳本的數據發送給腳本,接着是一個回調函數,當腳本通過echo調用返回數據時將調用該回調函數。

alert()確實被調用,但是它顯示的是php腳本,而不是字符串“ done”

我搜索了一下互聯網(找到了一點),並找到了一些示例,這些示例使用稱為AJAX的東西將數據發送到php之類的腳本。

我通過一個小例子學習得最好,有沒有一個好的例子指出我所缺少的東西? 我該如何工作?

最終,我計划采用任何JSON數據並將其保存到服務器上的文件中。 我是否需要在真實服務器上運行所有這些? 現在我沒有使用WAMP,但是我有WAMP設置,所以如果需要的話,我可以使用它。

感謝所有發布我的問題答案的人。 我正在編輯這篇文章,以顯示最終用來使應用程序正常工作的實際代碼。

JavaScript代碼:

alert(returnData); });
        $.ajax({
            url : "taskmanager.php" ,
            type : 'POST',
            data : JSON.stringify(dataStore),
            success : function(res) {
                    // Successfully sent data
                  console.log(res);
            },
            error: function(err) {
                // Unable to send data
                  console.log(err);
            }
        });

PHP代碼:

<?php

    $contents = file_get_contents('php://input');
    $data = json_decode( $contents );

    file_put_contents( "taskdata.json",  "data=".$contents );

    echo "<br>done</br>";

?>

jQuery ajax數據的默認Content-Typeapplication/x-www-form-urlencoded ,使用$_GET$_REQUEST$_POST在php中非常容易使用,並且不需要將字符串化為json

將對象直接傳遞到$.post (或任何$ .ajax方法),jQuery將在內部對其進行編碼

var data ={foo:'bar'};
$.post('taskmanager.php', data, function(resp){
   console.log(resp);
})

的PHP

echo $_POST['foo'];

如果只想使用json,則需要設置適當的Content-Type

$.ajax({
   url:'...',
   method:'post',
   contentType:'application/json',
   dataType:'json',
   data: JSON.stringify(data)
}).done(function(resp){
   console.log(resp);
});

然后在php中使用:

$data = json_decode(file_get_contents('php://input'));
$data['foo'] ='Some new value';
echo json_encode($data);

使用jQuery,您可以使用POST協議將數據發送到端點。 下面的例子

$.ajax({
    url : 'taskmanager.php',
    type : 'POST',
    data : JSON.stringify(dataStore),
    success : function(res) {
        // Successfully sent data.
        console.log(res);
    },
    error: function(err) {
        // Unable to send data.
        console.log(err);
    })
});

您也可以使用$ .post方法,它只是一個首選項。 $ .ajax提供了一些額外的靈活性,以防您可能想將協議更新為GET而不是post或其他許多實例...

此處的更多信息: http : //forum.jquery.com/topic/what-should-i-use-post-vs-ajax

我通常使用以下內容將JSON發布到php ...

$.post("publishdata.php", {
    dataArray: arrayOfStuff,
    meetingTitle: meetingTitle,
    meetingDate: meetingDate
},
function(data, status, response) {

     console.log(response);


});

暫無
暫無

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

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