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

¿Cómo se crea una matriz en jQuery y utilizar esa matriz en lugar de { pageNo: $(this).text(), sortBy: $("#sortBy").val()}¿cómo creo una matriz en jquery?

+0

Podría aclarar? No creo que alguien haya entendido realmente lo que intentas preguntar. –

+0

Jquery no es un lenguaje sino que deberías preguntar cómo hacerlo en javascript. –

Respuesta

10

No está completamente claro lo que quieres decir. Quizás:

<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

su código es equivalente a lo que tenía. un hash es un hash – mkoryak

+1

Sí, pero también viene de php, donde los arrays también son hashes ... En JavaScript, tampoco es un 'hash', es solo un objeto. +1: esta fue mi interpretación de la pregunta también. – gnarf

+2

Sé la diferencia entre las matrices de JavaScript y los objetos. Sin embargo, parecía que el verdadero objetivo de la pregunta era construir los parámetros dinámicamente. –

0

Aquí hay un ejemplo que utilicé.

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

su pregunta no tiene sentido. usted está preguntando cómo convertir un hash en una matriz. No puede.

se puede hacer una lista de valores, o hacer una lista de claves, y ninguno de ellos tiene nada que ver con jQuery, esto es pura Javascript

+0

... en otras palabras, un Array es un Array, un Hash es un Hash. Use lo que sea apropiado para la situación, no son intercambiables. – deceze

+2

... En realidad, ambos son objetos ... – gnarf

105

Algunos pensamientos:

  • jQuery es una biblioteca de JavaScript, no un idioma. Por lo tanto, las matrices de JavaScript tienen el siguiente aspecto:

    var someNumbers = [1, 2, 3, 4, 5]; 
    
  • { pageNo: $(this).text(), sortBy: $("#sortBy").val()} es un mapa de la clave de valor. Si quieres una gran variedad de las claves o valores, puede hacer algo como esto:

    var keys = []; 
    var values = []; 
    
    var object = { pageNo: $(this).text(), sortBy: $("#sortBy").val()}; 
    $.each(object, function(key, value) { 
        keys.push(key); 
        values.push(value); 
    }); 
    
  • objetos en JavaScript son increíblemente flexible. Si desea crear un objeto {foo: 1}, todos de los siguientes trabajos:

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

Para terminar, ¿quiere esto?

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

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

gracias por toda la ayuda, haré mi próxima pregunta simple, ¿Cómo puedo pasar dos variables a mi jquery? Quiero pasar PageNo y ordenar por ... 2 ?? – vick

+0

Por lo que entiendo: load (url, data) hits URL y envía datos como el POST. Si quisiera hacer clic en routing.php? P = 2 & sortBy = error, deberá agregarlo a la URL ("routing.php? P =" + pageNo + "& sortBy =" + sortBy). Eso, o haga que su script PHP sea leído desde $ _POST o $ _REQUEST en lugar de $ _GET. – ojrac

+0

Parece aquí 'var data = {};' necesita cambiar a 'var data = [];' – user2118559

25

Puede estar confundiendo matrices de Javascript con arreglos de PHP. En PHP, las matrices son muy flexibles. Pueden indexarse ​​numéricamente o asociarse, o incluso mezclarse.

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') 

Otros idiomas consideran que estos dos son cosas diferentes, entre ellos el Javascript. Una matriz en Javascript está siempre numéricamente indexado:

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

una "matriz asociativa", también llamado hash o mapa, técnicamente un objeto en Javascript *, funciona así:

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

No están intercambiable. Si necesita "claves de matriz", necesita usar un objeto. Si no lo haces, haces una matriz.


* Técnicamente todo es un objeto en Javascript, por favor dejar eso de lado para este argumento.;)

2

Aquí está el ejemplo de trabajo claro:

//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