我正在尝试使用AJAX提交表单,但数据未被传递。但是,我收到了成功消息。
我是否需要以某种方式在数据字符串中指定我的变量?
var dataString = first_name + surname + email_addr + user_age + user_type;
//alert (dataString);return false;
$.ajax({
type: "POST",
url: "process-signup.php",
data: dataString,
success: function() {
$('#contact_form').html("<div id='message'></div>");
$('#message').html("<h2>Contact Form Submitted!</h2>")
.append("<p>We will be in touch soon.</p>")
.hide()
.fadeIn(1500, function() {
$('#message').append("<img id='checkmark' src='images/check.png' />");
});
}
});
return false;
答案 0 :(得分:2)
是的。要么传递json,如:
JSON.stringify({ firstName: first_name, surName: surname ... });
正如评论中指出的,如果您使用的是jQuery ajax,它会自动将对象转换为查询字符串。
或指定参数名称(您只传递一个字符串,一个有效的查询字符串应该看起来像'parametername1 = paramatervalue1&amp; parametername2 = paramatervalue2'):
data: 'firstName=' + first_name + '&surname=' + surname + '&email=' + email_addr ...
然后在服务器端你应该有如下变量:
$_POST['firstName']; // first_name
$_POST['surname']; // surname
希望有所帮助。
答案 1 :(得分:1)
$.ajax({
type: "POST",
url: "process-signup.php",
data: {Firstname:first_name,Surname:surname,Email:email_addr,Age:user_age,User_type:user_type},
success: function() {
$('#contact_form').html("<div id='message'></div>");
$('#message').html("<h2>Contact Form Submitted!</h2>")
.append("<p>We will be in touch soon.</p>")
.hide()
.fadeIn(1500, function() {
$('#message').append("<img id='checkmark' src='images/check.png' />");
});
}
});
return false;
在服务器端使用$_POST['Firstname']
,$_POST['Surname']
等来获取传递的值。
答案 2 :(得分:0)
我在PHP上有点生疏,但是你正在POST,但是你发送了一个dataString。通常,您使用带有dataString的GET请求。此外,数据字符串通常如下所示:
var dataString ='first_name ='+ first_name +'&amp; surname ='+ surname +'&amp; email_addr ='+ email_addr +'&amp; user_age ='+ user_age +'&amp; user_type ='+ user_type; < / p>
此外,当你使用$ .ajax时,success函数有一个参数data,它通常在你回显时从php脚本返回。
所以它会这样写:
success: function(data) {
console.log('i got data!',data);
}