我应该如何在 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 个赞成票(我一开始没有找到它是我的坏事):
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) {
}
});
使用 ajax 的数据选项。您可以通过 ajax 中的 data
选项和定义发送方式的 type
(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
调用的 data
部分。请参阅the docs。像这样:
$.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() 或在 $.get
上链接 .fail
,如下所示
$.get(url, data, success, datatype)
.fail(function(){
})
将数据类型设置为“jsonp”的原因是由于浏览器同源策略问题,但如果您在托管 javascript 的同一域上发出请求,您应该可以将数据类型设置为 json
。
如果您不想使用 jquery $.get
,则 see the docs 用于 $.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
)作为参数传递之前提前定义它?我对 SO,stackoverflow.com/questions/41192531/… 有 Q。我在这个 Q 上更进一步,现在我调用一个 jquery 对话框并调用 ajax 从 mysql 检索数据。我缺少有关如何检索与每个 datapoint click 关联的唯一 ID 的链接。感谢您是否可以帮助我。谢谢
在我指定 data
时遇到了同样的问题,但浏览器正在向以 [Object object]
结尾的 URL 发送请求。
您应该将 processData
设置为 true
。
processData: true, // You should comment this out if is false or set to true
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
}
});
stringify
? jQuery 的 ajax
实现会为您解决这个问题。
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'];
不定期副业成功案例分享
encodeURIComponent
。 jquery 会为你做这件事。data:$.param({ajaxid: 4, UserID: UserID, EmailAddress: EmailAddress})
,而不是data: { ajaxid: 4, UserID: UserID, EmailAddress: EmailAddress }