如何通过jQuery在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:

在我的问题结束后(因为“太本地化了”),我发现了一个相关的(相同的)问题- 3个赞(我没有发现它是我的错):

使用jquery制作POST,如何正确地提供'数据'参数?< / >

这完美地回答了我的问题,我发现这样做更容易阅读&我不需要手动在URL或数据值中使用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) {


}
});
750148 次浏览

使用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();

试着加上这个:

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

将参数放在ajax调用的data部分。看到的文档。像这样:

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

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

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

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

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

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

有同样的问题,我指定data,但浏览器正在发送请求到以[Object object]结尾的URL。

你应该将processData设置为true

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

下面是使用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提供了更大的灵活性空间