如何通过与jQuery的GET请求参数(How to pass parameters in GET

2019-07-22 18:28发布

我应该如何传递一个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 } );

我更喜欢使用$阿贾克斯()格式,因为它是我已经习惯了(没有什么特别好的理由 - 只是个人喜好)。

编辑2013年9月4日:

我的问题被关闭之后(如“太本地化”),我发现了一个相关的(相同的)的问题 - 与3个upvotes没有少(我的坏摆在首位没有找到它):

使用jQuery做一个POST,如何正确地提供“数据”参数?

这个回答我的问题很好,我发现,做这种方式是更容易阅读和我不需要手动使用encodeURIComponent()在URL或数据值(这是我发现不清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) {

    }
});

Answer 1:

使用Ajax的数据选项。 您可以通过发送数据对象到服务器data在阿贾克斯和期权的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(); 


Answer 2:

把你的PARAMS在data中的一部分ajax调用。 请参阅该文档 。 像这样:

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


Answer 3:

下面是使用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像下面

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

之所以设置的数据类型为“JSONP”是由于浏览器的同源策略的问题,但如果你正在在哪里JavaScript是托管在同一域的请求,你应该罚款与数据类型设置为json

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



Answer 4:

尝试添加此:

$.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



Answer 5:

数据属性允许你在一个字符串发送。 在您的服务器端代码,接受它作为一个字符串参数名“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
    }
});


Answer 6:

您可以使用$.ajax()如果你不想直接把参数到URL中,使用data: 。 这是附加到URL

来源: http://api.jquery.com/jQuery.ajax/



Answer 7:

当初,我指定的相同问题data ,但浏览器是将请求发送到URL结尾[Object object]

你应该有processData设置为true

processData: true, // You should comment this out if is false or set to true


Answer 8:

AJAX方法的数据参数可以将数据发送到服务器side.On服务器端可以请求data.See代码

var id=5;
$.ajax({
    type: "get",
    url: "url of server side script",
    data:{id:id},
    success: function(res){
        console.log(res);
    },
error:function(error)
{
console.log(error);
}
});

在服务器端使用$ _ GET变量它接收。

$_GET['id'];


文章来源: How to pass parameters in GET requests with jQuery