这是我的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字符串化信息被调用&#34; data&#34;。
另外,我认为jQuery.post()将脚本名称作为第一个参数,然后将要发送到脚本的数据后跟一个回调函数,当脚本通过 echo <返回数据时调用该函数/ strong>来电。
alert()确实被调用但是它显示的是php脚本而不是字符串&#34;已完成&#34;
我已经搜索了互联网(一点点),并找到了一些使用AJAX的东西将数据发送到像php这样的脚本的例子。
我通过一个小例子学到了最好的东西,是否有一个很好的例子可以指出我所缺少的东西?我如何让它工作?
最终我计划获取JSON数据,并将其保存到服务器上的文件中。我是否需要使用真正的服务器来运行这一切?现在我没有使用一个,但我确实有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>";
?>
答案 0 :(得分:2)
jQuery ajax数据的默认Content-Type
为application/x-www-form-urlencoded
,使用$_GET
,$_REQUEST
和$_POST
非常容易在php中使用,并且不会; t需要字符串化为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);
答案 1 :(得分:1)
使用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而不是发布或许多其他实例......
有关此内容的更多信息:http://forum.jquery.com/topic/what-should-i-use-post-vs-ajax
答案 2 :(得分:0)
我通常使用以下命令将JSON POST到php ...
@if (@ViewBag.AList != null)
{
<table cellpadding="1" border="1">
<tr>
<th>
Widget Name
</th>
</tr>
@foreach (MvcProgramX.Models.LIST_FULL item in @ViewBag.AList)
{
<tr>
<td>
@item.WidgetName
</td>
</tr>
}
</table>
}