Javascript 使用jQuery和Ajax提交表单更改操作
我有一个表单,我正试图使用jQuery和AJAX提交它。我通过点击一个链接触发提交,我添加了一个onclick方法。下面是两个提交相同表单的代码示例——第一个可以工作,但不是AJAX,而第二个方法给了我一个404错误Javascript 使用jQuery和Ajax提交表单更改操作,javascript,jquery,ajax,forms,Javascript,Jquery,Ajax,Forms,我有一个表单,我正试图使用jQuery和AJAX提交它。我通过点击一个链接触发提交,我添加了一个onclick方法。下面是两个提交相同表单的代码示例——第一个可以工作,但不是AJAX,而第二个方法给了我一个404错误 function submitmyform(formid) { $(formid).submit(); } 第二个示例尝试使用AJAX,给出了相同的参数: function submitmyformajax(formid) { $.post({ t
function submitmyform(formid) {
$(formid).submit();
}
第二个示例尝试使用AJAX,给出了相同的参数:
function submitmyformajax(formid) {
$.post({
type: "POST",
url: $(formid).attr('action'),
data: $(formid).serialize(),
success: function(data) { alert(data); }
});
}
我尝试使用submitmyformajax的另一种方法是:
function submitmyformajax(formid) {
$.post({
type: "POST",
url: 'somehardcoded/url',
data: $(formid).serialize(),
success: function(data) { alert(data); }
});
}
出于某种原因,这继续给我一个404错误,尽管表单上的操作是正确的(它显示给我的URL与表单上的操作不同)
我检查了错误控制台,它将404错误显示为指向somehardcoded/[object%20Object]
,而不是我在方法中指定的内容
我做错了什么?用这个代替
$.post(
'somehardcoded/url',
{data:$(formid).serialize()},
function(data) {
alert(data);
}
);
用这个代替
$.post(
'somehardcoded/url',
{data:$(formid).serialize()},
function(data) {
alert(data);
}
);
我想你把
$.post
和$.ajax
搞混了$.post
是$的缩写。ajax
将字符串url作为第一个参数,对象作为数据,函数作为回调<代码>$。另一方面,ajax将对象作为配置,就像您正在做的那样
i、 e.签名后的签名是
$.post( url [, data ] [, success(data, textStatus, jqXHR) ] [, dataType ] )
这是
$.ajax({
type: "POST",
url: url,
data: data,
success: success,
dataType: dataType
});
您似乎同时使用了这两种方法,因此出现了奇怪的行为,因为它在您传递给$的第一个参数上调用toString。post
是[object object]
,然后该参数被编码为[object%20Object]
任用
$.post($(formid).attr('action'),
$(formid).serialize(),
function(data) { alert(data); })
或
我想你把
$.post
和$.ajax
搞混了$.post
是$的缩写。ajax
将字符串url作为第一个参数,对象作为数据,函数作为回调<代码>$。另一方面,ajax将对象作为配置,就像您正在做的那样
i、 e.签名后的签名是
$.post( url [, data ] [, success(data, textStatus, jqXHR) ] [, dataType ] )
这是
$.ajax({
type: "POST",
url: url,
data: data,
success: success,
dataType: dataType
});
您似乎同时使用了这两种方法,因此出现了奇怪的行为,因为它在您传递给$的第一个参数上调用toString。post
是[object object]
,然后该参数被编码为[object%20Object]
任用
$.post($(formid).attr('action'),
$(formid).serialize(),
function(data) { alert(data); })
或
我尝试使用上面所示的方法,并将URL直接写入函数中。但是,当它提交时,它会在ajax版本中将我的URL结尾替换为[object%20Object]。使用非ajax版本可以正常工作。看起来您的字符串url不正确。在函数上放置断点,然后计算$(formid).attr('action')解析为什么。我打赌这不是你所期望的这正是我所期望的。。。但是当它提交时,我检查控制台,它是不正确的。我还尝试手动指定URL,正如我在前面的评论中指出的,它似乎在提交到[object%20Object]时更改了URL的结尾。
submitmyformajax
是如何调用的?我怀疑这里存在序列化问题,尝试console.log($(formid).serialize())
,看看里面有什么,还要检查formid
的值是多少,我已经尝试使用上面显示的方法并将URL直接写入函数中。但是,当它提交时,它会在ajax版本中将我的URL结尾替换为[object%20Object]。使用非ajax版本可以正常工作。看起来您的字符串url不正确。在函数上放置断点,然后计算$(formid).attr('action')解析为什么。我打赌这不是你所期望的这正是我所期望的。。。但是当它提交时,我检查控制台,它是不正确的。我还尝试手动指定URL,正如我在前面的评论中指出的,它似乎在提交到[object%20Object]时更改了URL的结尾。submitmyformajax
是如何调用的?我怀疑这里存在序列化问题,尝试console.log($(formid).serialize())
,看看里面有什么,还要检查formid的值是多少
谢谢!这让我发疯,但我看不出我做错了什么。将一个单词的帖子切换到ajax就成功了,谢谢你对我看到的行为的解释。谢谢!这让我发疯,但我看不出我做错了什么。将一个单词的帖子切换到ajax就成功了,谢谢你对我看到的行为的解释。