我正在练习对localhost进行简单的AJAX调用,但遇到了麻烦。我要做的是将两个文本框表单值发送给PHP,然后通过AJAX成功接收后,它会将消息返回到表单中的空div。我的test.php是这样的:
<?php
$num = htmlentities(substr($_POST["num"], 0, 7), ENT_QUOTES);
$name = htmlentities(substr($_POST["name"], 0, 50), ENT_QUOTES);
$result = "'$num ' + 'and' + ' $name' + ' values have been successfully AJAXd'";
echo json_encode($result);
jQuery的:
$("#form").submit(function() {
event.preventDefault();
$("#msgcontainer").html("");
$.ajax({
url: "test.php",
data: ("#num").serialize(), ("#name").serialize(),
contentType: "application/json; charset=utf-8",
type: "POST",
dataType: "json"
success: function(response) {
$("#msgcontainer").html(response);
}
});
}
当我尝试提交时,页面只是重新加载并向URL添加表单值。我一直试图解决这个问题大约一天,所以任何帮助都会非常感激。
修改
我通过尝试每一个回复来解决问题。不确定为什么它没有序列化...如果有人知道,请解释。使用jQuery代码:
$("#form").submit(function(event) {
event.preventDefault();
$("#msgcontainer").html("");
$.ajax({
url: "test.php",
data: {
num: $("#num").val(),
name: $("#name").val()
},
type: "POST",
dataType: "json",
success: function(response) {
$("#msgcontainer").html(response);
}
});
});
感谢您的帮助!
答案 0 :(得分:1)
立即突出两件事:
data: ("#num").serialize(), ("#name").serialize(),
contentType: "application/json; charset=utf-8",
第一个应该是这个(假设你有两个文本框):
data: {
num: $('#num').val(),
name: $('#name').val()
},
contentType:
行不应该在那里,否则你会有一个空的$_POST
。
最后,event
应该是一个函数参数,即:
$("#form").submit(function(event) {
event.preventDefault();
// ...
答案 1 :(得分:1)
您的AJAX调用中的数据参数错误,应该类似于:
data: { num: $('#num').val() , name: $('#name').val() }
答案 2 :(得分:0)
$("#form").submit(function() {
event.preventDefault();
event
未在任何地方定义。我猜你的意思是...submit(function(event) {
。
您应该在JavaScript控制台中看到错误,告诉您“事件未定义”或“TypeError:无法读取属性'preventDefault'未定义。”
答案 3 :(得分:0)
数据未正确发送。考虑更换:
data: ("#num").serialize(), ("#name").serialize(),
使用:
data: $(this).serialize(),
然后您可能想要修改PHP
脚本,以便concatenate
字符串而不是summing
。
同时传递event
参数或只使用以下内容:
$("#form").submit(function() {
var event = arguments[0];
event.preventDefault();
....
});
我怀疑你需要contentType: "application/json; charset=utf-8",
!
答案 4 :(得分:0)
早上好,
您必须序列化整个表单,例如:
$("#yourform").serialize();
而不仅仅是逐个字段:
("#num").serialize(), ("#name").serialize()