在Ajax的URL调用中添加查询字符串

4

我想知道在调用Jquery Ajax时是否可以将查询字符串与URL一起传递;

例如:

    $.ajax({
           type: "POST",
           url: "index.php?task=addNewInfo",
           data: $('#regForm').serialize(),
           dataType: "json",
              .....
      });  

那么来自参数任务的查询字符串是否正常工作?还是我们需要另一种方式?谢谢。


你正在使用POST方法。你序列化的数据是“查询字符串”,或者更准确地说,是你发送的参数。只有在使用GET方法时,它才会变成查询字符串。 - Greg Pettit
看起来你正在通过 $_GET 访问 task,而通过 $_POST 访问其他数据。你应该将任务发送到数据中,而不是查询字符串中。 - Imdad
是的。为什么不试一下看看呢。 - Quentin
1
@GregPettit — 无论使用何种HTTP动词进行请求,URL的查询字符串组件都是查询字符串。 - Quentin
你能否取消接受我的答案? - user1125394
有时候你回顾旧代码或旧评论,@Quentin,会想知道当时在想什么?你促使我对自己的评论做了同样的事情。;) 谢谢。 - Greg Pettit
3个回答

9

将任务发送到数据参数中

data:"task=addNewInfo&" + $('#regForm').serialize()

这是用于使用POST方法的。 如果你想要使用GET方法,那么Arun的解决方案就可以正常工作。


4
我认为以下内容将会很好地发挥作用。
url : "index.php?task=addNewInfo&" + $('#regForm').serialize()

但是,为什么你想要将表单值作为查询参数传递?POST请求会将这些值作为请求参数传递。这些参数将通过请求正文发送,这也是你使用POST请求类型的原因。

0

是的。在HTTP请求中,查询字符串和请求正文是两个不同的东西。 对于GET请求,jQuery会将数据包装在查询字符串中,这可能是混淆的来源。

  • GET请求:正文(或有效载荷)为空,只有URL保存数据。
  • POST请求:可以随意填写正文,可以使用像您所做的URL编码,也可以使用JSON编码。

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