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

时间:2013-03-22 17:33:27

标签: javascript jquery ajax get

我应该如何在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()格式,因为这是我习惯的(没有特别好的理由 - 只是个人偏好)。

编辑09/04/2013:

在我的问题被关闭之后(作为“Too Localized”)我发现了一个相关的(完全相同的)问题 - 3个upvotes no-less(我不喜欢首先找到它):

Using jquery to make a POST, how to properly supply 'data' parameter?

这完全回答了我的问题,我发现这样做更容易阅读和阅读我不需要在URL或DATA值中手动使用encodeURIComponent()(这是我在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) {

    }
});

8 个答案:

答案 0 :(得分:254)

使用ajax的数据选项。您可以通过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(); 

答案 1 :(得分:16)

将您的参数放入data来电的ajax部分。见the docs。像这样:

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

答案 2 :(得分:4)

以下是使用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,那么see the docs $.ajax可以提供更大的灵活性

答案 3 :(得分:2)

尝试添加此内容:

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

答案 4 :(得分:1)

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
    }
});

答案 5 :(得分:0)

您可以使用$.ajax(),如果您不想将参数直接放入网址,请使用data:。这是附加到URL

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

答案 6 :(得分:0)

我指定data时出现同样的问题,但浏览器正在向以[Object object]结尾的网址发送请求。

您应该将processData设置为true

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

答案 7 :(得分:-1)

ajax方法的数据参数允许您将数据发送到服务器端。在服务器端,您可以请求数据。参见代码

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'];