Javascript 使用jQuery和Ajax提交表单更改操作

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

我有一个表单,我正试图使用jQuery和AJAX提交它。我通过点击一个链接触发提交,我添加了一个onclick方法。下面是两个提交相同表单的代码示例——第一个可以工作,但不是AJAX,而第二个方法给了我一个404错误

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就成功了,谢谢你对我看到的行为的解释。