Javascript 使用jquery发出带有元素属性的ajax请求
我想发出一个ajax请求,其中我想给出我所有元素的属性。例如,我选择了我的所有元素:Javascript 使用jquery发出带有元素属性的ajax请求,javascript,jquery,Javascript,Jquery,我想发出一个ajax请求,其中我想给出我所有元素的属性。例如,我选择了我的所有元素: var elements = $('.droppable') 然后我制作我的ajax: $.ajax({ url: "test.html", data: {myelements : elements}, success: function(){ } }); 如何将所有元素属性设置为高度、宽度、位置、顶部、左侧。。。根据我的ajax请求。我必须自己做一个数组
var elements = $('.droppable')
然后我制作我的ajax:
$.ajax({
url: "test.html",
data: {myelements : elements},
success: function(){
}
});
如何将所有元素属性设置为高度、宽度、位置、顶部、左侧。。。根据我的ajax请求。我必须自己做一个数组,还是有其他方法
我想这样做是因为我想在数据库中保存元素的所有绝对位置
谢谢您的帮助。在ajax的成功中不能使用$(this),在本例中使用elements.addClass('done')
另外,为多个元素提供不同高度/宽度/位置的唯一方法是,必须将每个元素的唯一id发布到ajax表单,然后响应必须是一个包含该元素的唯一id、高度、宽度和位置的对象(最有可能是json)因此,您可以根据每个元素的唯一id选择每个元素,然后根据返回的对象更改值您不能在success for ajax中使用$(this),在本例中使用elements.addClass('done')
另外,为多个元素提供不同高度/宽度/位置的唯一方法是,必须将每个元素的唯一id发布到ajax表单,然后响应必须是一个包含该元素的唯一id、高度、宽度和位置的对象(最有可能是json)因此,您可以根据元素的唯一id选择每个元素,然后根据返回的对象更改值我认为您希望通过元素循环并将每个元素分别发布到数据库中。让您的服务器方法返回一个json对象,您可以使用该对象在页面上查找elment以更新类
$(".droppable").each(function(index, item){
var id = $(item).attr("id"); //server will pass this back so you can select it later
var height = $(item).css("height");
var width = $(item).css("width");
// etc.
$.ajax({
url: "test.html",
data: {id: height: height, width: width}, //add each property
success: function(data){ //data is returned by your server method
$(data.elementId).addClass("done"); //you passed elementId to the server as 'id'
}
});
});
如果您想在一个请求中执行此操作,可以设置一个关联数组并传递该数组。现在已经很晚了,我已经记不得了。这可能不是确切的语法,但希望它能为您指明正确的方向
var elements = new Array();
$(".droppable").each(function(index, item){
var id = $(item).attr("id"); //server will pass this back so you can select it later
var height = $(item).css("height");
var width = $(item).css("width");
// etc.
var item = { id: id, height: height, width: width };
elements.push(item); //an array of objects
});
$.ajax({
url: "test.html",
data: {elements: elements}
success: function(data){ //data is returned by your server method
// set the class on success
}
});
我认为您需要循环遍历元素,并将每个元素分别发布到数据库中。让您的服务器方法返回一个json对象,您可以使用该对象在页面上查找elment以更新类
$(".droppable").each(function(index, item){
var id = $(item).attr("id"); //server will pass this back so you can select it later
var height = $(item).css("height");
var width = $(item).css("width");
// etc.
$.ajax({
url: "test.html",
data: {id: height: height, width: width}, //add each property
success: function(data){ //data is returned by your server method
$(data.elementId).addClass("done"); //you passed elementId to the server as 'id'
}
});
});
如果您想在一个请求中执行此操作,可以设置一个关联数组并传递该数组。现在已经很晚了,我已经记不得了。这可能不是确切的语法,但希望它能为您指明正确的方向
var elements = new Array();
$(".droppable").each(function(index, item){
var id = $(item).attr("id"); //server will pass this back so you can select it later
var height = $(item).css("height");
var width = $(item).css("width");
// etc.
var item = { id: id, height: height, width: width };
elements.push(item); //an array of objects
});
$.ajax({
url: "test.html",
data: {elements: elements}
success: function(data){ //data is returned by your server method
// set the class on success
}
});
你必须自己做,列出你想要的属性。因此,您不必执行
{width:“width”,height:“height”}
等操作。使用以下方法,您可以将包含css元素和attr元素的数组放入将用作循环的数组中
您甚至可能希望将attr
和css
数组分开,因为当您从服务器获取它时,您可以循环遍历每个元素属性和css对象
比如:
你必须自己做,列出你想要的属性。因此,您不必执行
{width:“width”,height:“height”}
等操作。使用以下方法,您可以将包含css元素和attr元素的数组放入将用作循环的数组中
您甚至可能希望将attr
和css
数组分开,因为当您从服务器获取它时,您可以循环遍历每个元素属性和css对象
比如:
如果设置设置对象的
上下文
属性,则可以使用$(this)
。不过,我同意,这在这里不值得。@lonesomeday我从来都不知道上下文:x您可以使用上下文:$(this)
,然后在成功中使用$(this)吗?好的,jQuery对象将是this
,因此您不需要将其包装在jQuery构造函数中,但是,否则,是的。因此,您可以执行this.append(result)
,例如,将结果添加到jQuery选择中的元素末尾。如果您设置设置对象的上下文属性,则可以使用$(this)
。不过,我同意,这在这里不值得。@lonesomeday我从来都不知道上下文:x您可以使用上下文:$(this)
,然后在成功中使用$(this)吗?好的,jQuery对象将是this
,因此您不需要将其包装在jQuery构造函数中,但是,否则,是的。因此,您可以执行此操作。例如,附加(result)
,将结果添加到jQuery选择中元素的末尾。嗯,请求很多,我可能有300/400个对象:)但是您说得对,这是一种解决方案,但我认为在我的情况下不是最好的。谢谢你这是很多要求,我可能会有300/400个对象:)但你是对的,这是一个解决方案,但我认为在我的情况下不是最好的。非常感谢。