1

我想在图像排序后发送带有图像路径和标题的数组到PHP脚本。 我可以在列表上做'serialize'或'toArray',但是如何从img标签获取属性?jquery ui从儿童排序序列化

<ul class="gallery"> 
    <li id="li-1"> 
     <img src="tn/001.jpg" alt="first caption" /> 
    </li> 
    <li mycaption="some caption" id="li-2"> 
     <img src="tn/002.jpg" alt="second caption with éèçà international chars" /> 
    </li> 
</ul> 

$(".gallery").sortable({ 
    update : function() { 
     serial = $('.gallery').sortable('serialize'); 
     alert(serial); 
     /* $.ajax({ 
      url: "sort.php", 
      type: "post", 
      data: serial, 
      error: function() {alert("theres an error with AJAX");} 
     }); */ 
    } 
}); 

回答

1

因此,这里是我会怎么序列化此,成对象有两个成员,src_arrcaption_arr

var getPaths = function() { 
    var imgPaths = { 'src_arr': [], 'caption_arr': []}; 
    $('.gallery img').each(function(){ 
     imgPaths.src_arr.push($(this).attr('src')); 
     imgPaths.caption_arr.push($(this).attr('alt')); 
    }); 
    return imgPaths; 
}; 

所以我想与您的代码做到这一点:

$.ajax({ 
    url: "sort.php", 
    type: "POST", 
    dataType: 'html', 
    data: getPaths(), 
    success: function(data, textStatus, XMLHttpRequest) { 
     // you need to do something in here 
     $('#debug').html('<pre>' + data + '</pre>'); 
    }, 
    error: function() { 
     alert("theres an error with AJAX"); 
    } 
}); 

原始数据为print_r()/sort.php外观如下:

Array 
(
    [src] => Array 
     (
      [0] => tn/001.jpg 
      [1] => tn/002.jpg 
     ) 

    [caption] => Array 
     (
      [0] => first caption 
      [1] => second caption with éèçà international chars 
     ) 

) 
+0

非常感谢!所以没有必要使用序列化?我昨晚也在想同样的事情。这可能是有用的,如果你只是发送一些ID的数据库更新也许? – FFish 2010-05-07 09:18:12

+0

一定要阅读关于'jQuery.ajax'的文档:http://api.jquery.com/jQuery.ajax/ - 它表示“要发送到服务器的数据。它被转换为查询字符串,如果不是已经是一个字符串了,它被附加到'GET'请求的url上,参见'processData'选项来阻止这个自动处理对象必须是键/值对如果value是一个Array,jQuery使用相同的键序列化多个值, {foo:[“bar1”,“bar2”]}'变成''&foo = bar1&foo = bar2''“。 – artlung 2010-05-07 13:18:31