Javascript 使用jquery发出带有元素属性的ajax请求

Javascript 使用jquery发出带有元素属性的ajax请求,javascript,jquery,Javascript,Jquery,我想发出一个ajax请求,其中我想给出我所有元素的属性。例如,我选择了我的所有元素: var elements = $('.droppable') 然后我制作我的ajax: $.ajax({ url: "test.html", data: {myelements : elements}, success: function(){ } }); 如何将所有元素属性设置为高度、宽度、位置、顶部、左侧。。。根据我的ajax请求。我必须自己做一个数组

我想发出一个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个对象:)但你是对的,这是一个解决方案,但我认为在我的情况下不是最好的。非常感谢。