[英]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-Type
是application/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.