2010-05-06 101 views
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