jQuery同时发送GET和POST参数的AJAX请求

8
如何通过jQuery AJAX请求同时发送GET和POST参数?
我试图将 do=ajax&id=" + ID 添加到 url 中,但结果请求仅发送到 sss.php 而没有查询字符串(get部分)。谢谢。
$.ajax({
    url: "sss.php?do=ajax&id=" + ID ,
    type: "post",
    data: "ddd=sss",
    // callback handler that will be called on success
    success: function(response, textStatus, jqXHR){
        // log a message to the console
        console.log("Hooray, it worked!");
    },
    // callback handler that will be called on error
    error: function(jqXHR, textStatus, errorThrown){
        // log the error to the console
        console.log(
            "The following error occured: "+
            textStatus, errorThrown
        );
    }
});

尝试使用$.post而不是$.ajax - defuz
1
@defuz:就所有目的而言,他/她正在使用postpost只是type:“post”请求的便捷包装器。 - T.J. Crowder
对我来说,你的解决方案是有效的。它也应该适用于你。去检查一下你的Chrome网络控制台,看看发送给服务器的请求是什么。 - Adam Lukaszczyk
T.J. Crowder,我理解,但据我所记,我有一个类似的例子可以正确工作,唯一的区别是我使用了方法post。也许存在一些差异。这只是我的猜测,不是答案。 - defuz
查询字符串应使用get而不是post,因为据我所知,post会透明地传递所有内容。 - The Alpha
@Dobiatowski 我正在使用带有httpfox插件(日志记录)的Firefox浏览器,我清楚地看到方法是post,已发送ddd=sss,但未发送do=ajax&id=XX。:(服务器还发送了回答说“没有id”。 - abrahab
1个回答

9
我觉得你遇到了观察错误,或者出现了与jQuery无关的服务器端问题。当我像这样发布一个post时:(链接)
$.ajax({
  url: "http://jsbin.com/eduzif/1?foo=bar",
  type: "post",
  data: "baz=doh",
  success: function() {
    display("Done, look at your console's network tab");
  }
});

...查询字符串和POST数据都会被发送到服务器。如果您使用像Chrome或Firefox这样的现代浏览器,并在触发POST后查看控制台的网络选项卡,那么很容易检查到这一点。在我的情况下:

Image showing post with both query string and form data

(您可以忽略上面的服务器回复403;JSBin不允许POST,但这并不影响我们在请求中看到的内容。)

所以这里的答案是:仔细检查您在服务器端如何获取数据。URL中的参数(“GET”样式参数)可用作查询字符串参数(URL的一部分);“POST”样式参数可用作“表单”数据(例如,响应正文)。根据您使用的服务器端技术,通常有不同的方法来检索GET(查询字符串)参数与POST(表单数据/正文)参数。


感谢,重新检查过了,复制并粘贴代码,现在似乎可以工作了。不知道第一个版本的代码出了什么问题 :( 谢谢 - abrahab

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接