2010-04-16 65 views
55
$(document).ready(function() { 
    $("a").click(function() { 
    $("#results").load("jquery-routing.php", 
     { pageNo: $(this).text(), sortBy: $("#sortBy").val()} 
    ); 
    return false; 
    }); 
}); 

如何創建jQuery的數組,並使用數組而不是{ pageNo: $(this).text(), sortBy: $("#sortBy").val()}如何在jquery中創建數組?

+0

你能澄清?我不認爲有人真的明白你想問什麼。 – 2010-04-16 06:28:37

+0

Jquery不是一種語言,而是你應該問如何在JavaScript中這樣做。 – 2015-11-18 06:00:14

回答

10

不完全清楚你的意思。也許:

<script type="text/javascript"> 
$(document).ready(function() { 
    $("a").click(function() { 
    var params = {}; 
    params['pageNo'] = $(this).text(); 
    params['sortBy'] = $("#sortBy").val(); 
    $("#results").load("jquery-routing.php", params); 
    return false; 
    }); 
}); 
</script> 
+1

你的代碼與他所擁有的相同。散列是散列 – mkoryak 2010-04-16 02:58:31

+1

是的,但他也來自PHP,其中數組也是散列...在JavaScript中,它不是「散列」 - 它只是一個對象。 +1 - 這也是我對這個問題的解釋。 – gnarf 2010-04-16 03:05:08

+2

我知道JavaScript數組和對象之間的區別。但是,這個問題的真正問題似乎是動態構建參數。 – 2010-04-16 03:17:07

0

這是我使用的一個例子。

<script> 
    $(document).ready(function(){ 
     var array = $.makeArray(document.getElementsByTagName(「p」)); 
     array.reverse(); 
     $(array).appendTo(document.body); 
    }); 
</script> 
0

你的問題沒有意義。你正在問如何將一個哈希變成一個數組。 你不能

可以使值的列表,或者使鍵的列表,並沒有這些有什麼用jQuery,這是純JavaScript

+0

......換句話說,一個數組是一個數組,一個哈希是一個哈希。使用適合的情況,它們不可互換。 – deceze 2010-04-16 03:01:37

+2

...其實,它們都是對象... – gnarf 2010-04-16 03:06:41

105

的幾點思考:

  • jQuery是一個JavaScript庫,而不是一種語言。所以,JavaScript數組是這個樣子:

    var someNumbers = [1, 2, 3, 4, 5]; 
    
  • { pageNo: $(this).text(), sortBy: $("#sortBy").val()}地圖是一個關鍵的價值。如果你想在鍵或值的數組,你可以這樣做:在JavaScript

    var keys = []; 
    var values = []; 
    
    var object = { pageNo: $(this).text(), sortBy: $("#sortBy").val()}; 
    $.each(object, function(key, value) { 
        keys.push(key); 
        values.push(value); 
    }); 
    
  • 對象是非常靈活。如果你想創建一個對象{foo: 1},以下所有工作:

    var obj = {foo: 1}; 
    
    var obj = {}; 
    obj['foo'] = 1; 
    
    var obj = {}; 
    obj.foo = 1; 
    

包,你要嗎?

var data = {}; 
// either way of changing data will work: 
data.pageNo = $(this).text(); 
data['sortBy'] = $("#sortBy").val(); 

$("#results").load("jquery-routing.php", data); 
+0

感謝所有的幫助,我會讓我的下一個問題變得簡單, 如何將兩個變量傳遞給我的jquery?我想傳遞PageNo和SortBy ... 2 ?? – vick 2010-04-16 03:16:48

+0

據我所知:加載(網址,數據)命中URL併發送數據作爲POST。如果你想打routing.php?p = 2&sortBy = error,你需要將其添加到URL(「routing.php?p =」+ pageNo +「&sortBy =」+ sortBy)。那樣,或者讓你的PHP腳本從$ _POST或$ _REQUEST讀取而不是$ _GET。 – ojrac 2010-04-16 04:26:16

+0

似乎在這裏'var data = {};'需要改變''var data = [];' – user2118559 2014-11-29 02:06:51

25

您可能會混淆Javascript數組與PHP數組。在PHP中,數組非常靈活。它們可以是數字索引或關聯的,或者甚至是混合的。

array('Item 1', 'Item 2', 'Items 3') // numerically indexed array 
array('first' => 'Item 1', 'second' => 'Item 2') // associative array 
array('first' => 'Item 1', 'Item 2', 'third' => 'Item 3') 

其他語言認爲這兩個是不同的東西,Javascript是其中之一。在JavaScript中數組總是數字索引:

['Item 1', 'Item 2', 'Item 3'] // array (numerically indexed) 

的「關聯數組」,也叫哈希或地圖,技術上在Javascript *的對象,是這樣的:

{ first : 'Item 1', second : 'Item 2' } // object (a.k.a. "associative array") 

他們不互換。如果你需要「數組鍵」,你需要使用一個對象。如果你不這樣做,你可以製作一個陣列。


*技術上一切是在Javascript對象,請放一邊了這種說法。;)

2

這裏是明確工作示例:

//creating new array 
var custom_arr1 = []; 


//storing value in array 
custom_arr1.push("test"); 
custom_arr1.push("test1"); 

alert(custom_arr1); 
//output will be test,test1