如何使用 jQuery 在 GET 请求中传递参数

IT技术 javascript jquery ajax get
2021-01-26 12:37:19

我应该如何在 jQuery Ajax 请求中传递查询字符串值?我目前按如下方式执行它们,但我确信有一种更简洁的方法不需要我手动编码。

$.ajax({
    url: "ajax.aspx?ajaxid=4&UserID=" + UserID + "&EmailAddress=" + encodeURIComponent(EmailAddress),
    success: function(response) {
        //Do Something
    },
    error: function(xhr) {
        //Do Something to handle error
    }
});

我见过查询字符串参数作为数组传递的示例,但我见过的这些示例没有使用$.ajax()模型,而是直接转到$.get(). 例如:

$.get("ajax.aspx", { UserID: UserID , EmailAddress: EmailAddress } );

我更喜欢使用 $.ajax() 格式,因为这是我习惯的(没有特别好的理由 - 只是个人喜好)。

2013 年 9 月 4 日编辑:

在我的问题结束后(如“太本地化”),我发现了一个相关(相同)的问题 - 不少于 3 个赞成票(我很遗憾没有首先找到它):

使用 jquery 进行 POST,如何正确提供“数据”参数?

这完美地回答了我的问题,我发现这样做更容易阅读并且我不需要encodeURIComponent()在 URL 或 DATA 值中手动使用(这是我在 bipen 的回答中发现不清楚的)。这是因为该data值是通过$.param())自动编码的以防万一这对其他人有用,这是我使用的示例:

$.ajax({
    url: "ajax.aspx?ajaxid=4",
    data: { 
        "VarA": VarA, 
        "VarB": VarB, 
        "VarC": VarC
    },
    cache: false,
    type: "POST",
    success: function(response) {

    },
    error: function(xhr) {

    }
});
6个回答

使用ajax的数据选项。您可以通过dataajax 中选项将数据对象发送到服务器,type它定义了您发送它的方式(POSTGET)。默认类型是GET方法

试试这个

$.ajax({
  url: "ajax.aspx",
  type: "get", //send it through get method
  data: { 
    ajaxid: 4, 
    UserID: UserID, 
    EmailAddress: EmailAddress
  },
  success: function(response) {
    //Do Something
  },
  error: function(xhr) {
    //Do Something to handle error
  }
});

您可以通过以下方式获取数据(如果您使用的是 PHP)

 $_GET['ajaxid'] //gives 4
 $_GET['UserID'] //gives you the sent userid

在aspx中,我相信它是(可能是错误的)

 Request.QueryString["ajaxid"].ToString(); 
@KlwWallace 不。那是 PHP(服务器端)取决于您使用的服务端语言。在 PHP 中,这就是我们获取 get 请求值的方式。
2021-03-14 12:37:19
您需要使用 jQuery.param() 函数将对象转换为 GET 参数,因此使用 jQuery 您应该使用data:$.param({ajaxid: 4, UserID: UserID, EmailAddress: EmailAddress}), 而不是data: { ajaxid: 4, UserID: UserID, EmailAddress: EmailAddress }
2021-03-30 12:37:19
@bipen。收到。我删除了我的评论,以免混淆任何人。谢谢。
2021-03-31 12:37:19
你不需要encodeURIComponentjquery 会为你做这件事。
2021-04-06 12:37:19
我将如何传递这个特定示例的请求正文?
2021-04-11 12:37:19

将您的参数放在通话data部分ajax请参阅文档像这样:

$.ajax({
    url: "/TestPage.aspx",
    data: {"first": "Manu","Last":"Sharma"},
    success: function(response) {
        //Do Something
    },
    error: function(xhr) {
        //Do Something to handle error
    }
});

这是使用 jQuery 的语法 $.get

$.get(url, data, successCallback, datatype)

所以在你的情况下,这相当于,

var url = 'ajax.asp';
var data = { ajaxid: 4, UserID: UserID, EmailAddress: EmailAddress };
var datatype = 'jsonp';

function success(response) {
// do something here 
}

$.get('ajax.aspx', data, success, datatype)

注意 $.get没有给你设置错误处理程序的机会。但是有几种方法可以使用$.ajaxSetup()$.ajaxError().fail$.get下面链接 a

$.get(url, data, success, datatype)
 .fail(function(){
})

将数据类型设置为 'jsonp' 的原因是由于浏览器同源策略问题,但如果您在托管 javascript 的同一域上发出请求,则将数据类型设置为json.

如果你不想使用jQuery的$.get,然后看到文档$.ajax,它允许更多空间的灵活性

尝试添加这个:

$.ajax({
    url: "ajax.aspx",
    type:'get',
    data: {ajaxid:4, UserID: UserID , EmailAddress: encodeURIComponent(EmailAddress)},
    dataType: 'json',
    success: function(response) {
      //Do Something
    },
    error: function(xhr) {
    //Do Something to handle error
    }
});

取决于预期的数据类型,您可以分配 html, json, script, xml

您的解决方案很有帮助,但想知道如何在将变量 ( ID) 作为参数传递之前预先定义它?我其Q的SO,stackoverflow.com/questions/41192531/...我在这个 Q 上取得了更进一步的进展,现在我调用 jquery 对话框并调用 ajax 从 mysql 检索数据。我缺少有关如何检索与每个数据点单击关联的唯一 ID 的链接如果你能帮助我,不胜感激。谢谢
2021-03-26 12:37:19

data 属性允许您发送一个字符串。在您的服务器端代码中,接受它作为字符串参数名称“myVar”,然后您可以解析它。

$.ajax({
    url: "ajax.aspx",
    data: [myVar = {id: 4, email: 'emailaddress', myArray: [1, 2, 3]}];
    success: function(response) {
    //Do Something
    },
    error: function(xhr) {
    //Do Something to handle error
    }
});
你为什么要这样做stringifyjQuery 的ajax实现会为您处理这些问题。
2021-03-22 12:37:19