我应该如何在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,如何正确地提供“数据”参数?
这完美地回答了我的问题,我发现这样做更容易阅读&我不需要手动使用encodeURIComponent()在URL或数据值(这是我发现不清楚的bipen的答案)。这是因为数据值通过$.param()自动编码。以防这对其他人有用,这是我用的例子:
$.ajax({
url: "ajax.aspx?ajaxid=4",
data: {
"VarA": VarA,
"VarB": VarB,
"VarC": VarC
},
cache: false,
type: "POST",
success: function(response) {
},
error: function(xhr) {
}
});
使用ajax的数据选项。你可以通过ajax中的数据选项和定义你如何发送它(POST或GET)的类型将数据对象发送到服务器。默认类型为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的数据选项。你可以通过ajax中的数据选项和定义你如何发送它(POST或GET)的类型将数据对象发送到服务器。默认类型为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();
下面是使用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()或在$. ajaxerror上链接一个.fail。像下面这样
$.get(url, data, success, datatype)
.fail(function(){
})
将数据类型设置为“jsonp”的原因是由于浏览器同源策略问题,但如果您在javascript托管的同一域上发出请求,则数据类型设置为json应该没问题。
如果你不想使用jquery $。然后花$去看医生。Ajax提供了更大的灵活性空间