我有这段代码:
var data_string = $('form#frm').serialize();
$.ajax({
type: "POST",
url: "/send.php",
data: data_string,
success: function(data) {
alert(data);
在php文件中:
$to = mysql_real_escape_string($_POST['email']); //email
$name = mysql_real_escape_string($_POST['name']); //name of tipper
$msg = mysql_real_escape_string($_POST['msg']); //message
echo $name; //EXAMPLE
ajax代码中的上述警告应该警告已发布的$name
变量。
但是,警报框出现了,但它是空白的。
我认为它与序列化部分有关。
从php回显1或0工作正常,警告框显示1或0。
任何想法都错了吗?
由于
编辑:
在警告序列化数据时发现:
alert (data_string);
我得到“未定义”......
以下是表格:
<form name='frm' id='frm' action='send.php' method='post' onsubmit='tip_func(); return false;'>
<input type='text' name='name' id='name'>
tip_func()是上述所有ajax都是......
的函数答案 0 :(得分:2)
根据.serialize()
documentation:
注意:只有“成功控制” 序列化为字符串。没有提交 按钮值自序列化 表单未使用按钮提交。 对于表单元素的值 包含在序列化字符串中 element必须具有name属性。 来自文件选择元素的数据不是 序列
你检查了所有这些吗?您是否尝试过警告data_string
?
答案 1 :(得分:1)
您是否测试了data_string
?首先尝试对其进行警报以检查其中是否有数据!
var data_string = $('#frm').serialize();
alert(data_string);
答案 2 :(得分:1)
如果您尝试将数据传递给javascript函数,那么为什么不使用json
(http://json.org/)来实现此目的,因为它是为了序列化而设计的,并且对于大多数语言有很多选项,所以你不必重新发明轮子。
最终,您可以花时间研究如何使序列化工作,但如果考虑进行更改,您的时间可能会更高效。
答案 3 :(得分:1)
现在似乎有效,我换了:
var data_string = $('form#frm').serialize();
使用:
var form = document.getElementById('frm');
var data_string = form.serialize();
对我很困惑......
答案 4 :(得分:0)
请尝试使用print_r($_POST)
查看您的$ _POST变量是否已过帐。