虽然我还在阅读Nicholas C. Zakas的书(在4天内阅读了300多页),但同时我还有一个小项目为我们后来的大项目创建一个半自动化的文档生成器页面。这已经完成了一半,但现在我想给它提供更多的功能,这需要我将textareas的值发送给PHP,所以PHP可以更新mysql而反之亦然,但现在不是问题了。
问题: Ajax成功,我收到了成功消息,但PHP没有读取POST。为什么呢?
我做了我的研究,我阅读了stackoverflow主题和其他网站,phpmanual,w3school示例的音调,但出了点问题。
<form id="foo">
<label for="bar">A bar</label>
<input id="bar" name="bar" type="text" value="" />
<input type="submit" value="Send" />
</form>
<div id="result"></div>
<script src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
<script src="script.js"></script>
/* Attach a submit handler to the form */
$("#foo").submit(function(event) {
/* Stop form from submitting normally */
event.preventDefault();
/* Clear result div*/
$("#result").html('');
/* Get some values from elements on the page: */
var values = $("#foo").serialize();
console.log("val: "+values);
/* Send the data using post and put the results in a div */
$.ajax({
url: "ez.php",
type: "POST",
data: values,
success: function(){
$("#result").html('Submitted successfully');
},
error:function(){
alert("failure");
$("#result").html('There is error while submit');
}
});
});
<?php
if(isset($_POST['bar']))
{
echo "hello " . $_POST['bar'];
};
?>
所有三个文件都在同一个文件夹中。
我肯定会在以后更深入地了解这个话题,我现在需要尽快完成这个小项目。我将成为前端开发人员,所以php部分不会等我,但现在我需要它进行测试,直到我可以与服务器端程序员交谈。我想确定哪些变量和数据会发送给他,以便他以后可以处理。
提前致谢!
答案 0 :(得分:8)
您如何知道您的脚本没有收到数据?
将成功更改为以下内容:
success: function(data){
$("#result").html('Submitted successfully:' + data);
},
你所做的就是说'如果收到回复而没有错误更新一个div' - 你无法知道你的php脚本是否已经成功运行(它已经运行,因为你获得了成功)或者没有时刻。
使用函数中的“数据”,您可以查看脚本是否已传回信息。
尝试以上操作,让我们知道你是如何进行的
FOR CLARITY
访问它们时,PHP脚本运行ONCE - 它们没有内存(除$cheese = "yummy";
等固定变量外
当您访问该页面时(即使在运行您的脚本之后)看不到响应的原因是它有点愚蠢并且不记得您运行它。
因此直接访问脚本脚本正在进行
'哦 - 这是表演时间,对吧.....错误.....好吧 - 有人送我'酒吧' - 不 好吧,在那种情况下,我不会做if语句中的内容 - 我的工作结束 - 这里没什么可做的,我什么都不回来。'
试试这个:
更改$_POST['bar'] to $_GET['bar'];
然后转到脚本所在的URL并输入http://yoururl.com/script.php?bar=terrence
你会注意到你现在得到了一个回复,因为你传递了它想要返回的脚本,所以if语句中的内容也是如此。
要保留数据,您需要存储到数据库或文本文件。
希望很清楚!
答案 1 :(得分:0)
如果你在窗户上,请找Fiddler。这是来自微软的免费数据包嗅探器。它可以让你看到它们之间的内容。您将能够看到套接字看到的来自浏览器的内容以及套接字从服务器接收的内容。
http://msdn.microsoft.com/en-us/library/bb250446%28v=vs.85%29.aspx#ie_introfiddler_topic2
对于你正在做的事情可能有点过分,但我认为拥有很好的调试工具总是好的。它为您提供了选择,并打开了可能性。
那里也有其他人。而且我确信还有nix工具。
答案 2 :(得分:0)
我认为一切都是正确的,除非你从你的表单传递任何值。只需要替换这段代码
<form id="foo">
<label for="bar">A bar</label>
<input id="bar" name="bar" type="text" value="something" />
<input type="submit" value="Send" />
</form>
我认为它会解决你的问题。并在js中添加更改这个小代码
表格
success: function(){
$("#result").html('Submitted successfully');
},
要
success: function(result){
$("#result").html('Submitted successfully'+result);
},