2010-03-22 2 views
5

Вот история ... У меня есть функция jQuery, которая что-то делает, эта функция ссылается очень регулярно. Один из входных параметров является массив, этот массив данные закодированы и поэтому я хочу, чтобы передать данные, как это: (это, как я хотел бы сделать это с помощью PHP)Передайте массив данных функции jQuery

myFunction(Array("url"=>"abc.com","example"=>"hello_world")); 

Вместо

$arr=Array("url"=>"abc.com","example"=>"hello_world"); 
myFunction($arr); 

Итак, как мне добиться этого с помощью моей функции jQuery, я хочу, чтобы это было одним лайнером, если это возможно.

Редактировать

Может быть, мой пример был немного вводит в заблуждение, взгляните на индексы массива снова. Массив, который я отправляю, является ассоциативным массивом.

Короче говоря, я не хочу никаких переменных перед моей функцией, я хочу, чтобы массив был жестко запрограммирован непосредственно в параметре функции, как это было предложено в первом примере, который я дал.

:-)

ответ

7

я перечитал свой отредактированный вопрос, и ваш ответ в JavaScript Object, так же, как словари или хэшей на других языках:

{ first_key: '1', second_key: '2', third_key: '3' }; 

И для обратного вызова, просто передать его в качестве литерала объявлен на месте:

myFunction({ first_key: '1', second_key: '2', third_key: '3'}); 
1

Вот пример, если это то, что вы имеете в виду:

var arr = [ "one", "two", "three", "four", "five" ]; 

    jQuery.each(arr, function() { 
      $("#" + this).text("Mine is " + this + "."); 
      return (this != "three"); // will stop running after "three" 
     }); 

//Source http://api.jquery.com/jQuery.each/ 
+0

Спасибо за ваш ответ, к сожалению, я думаю, что мой вопрос немного вводит в заблуждение, и, следовательно, это не относится к моей проблеме. Спасибо любым способом, хотя :) –

0

Я не совсем уверен, что вы просите, но я дам ответ на него выстрел , Если вы ссылка этого массива в более чем одном месте, то это, вероятно, лучше всего определить его как константу первый:

ARRAY = ['a', 'b', 'c'] 
    myFunction(ARRAY); 
    myFunction2(ARRAY); 

Если ваш только ссылки на этот жесткий кодированный массив один раз, а затем передать его в функцию JQuery как массив буквальный объявлен в вызове функции:

myFunction(['a', 'b', 'c']); 
+0

Привет, ваш последний пример - это почти то, что я хочу сделать, я не хочу никаких переменных перед моей функцией, но это должен быть ассоциативный массив.Еще раз спасибо :) –

1

Look в формате JSON форматирования для вашего массива ...

somefunction({'key1':'value', 'key2':'value'}); 
+0

Спасибо за ваш ответ, я попробовал это 'func (['key1': 'value', 'key2': 'value']);', но получить эту ошибку 'missing 'после списка элементов [Break on эта ошибка] getElementContents (['key1': 'value', 'key2': 'value']); ': S –

+1

Я исправил его, у меня были неправильные скобки – David

+0

Это сработало отлично, но bobthabuilda попал туда первым. Большое спасибо за вашу помощь :) –

0

JavaScript не имеет ассоциативные массивы. Вероятно, вы можете получить то, что вы просите с комбинацией обычных массивов и объектов:

var foo = [ 
    { 
     url: "abc.com", 
     example: "hello_world" 
    }, 
    { 
     url: "example.net", 
     example: "example" 
    } 
]; 

Существует формат данных называется JSON, который использует синтаксис JavaScript. Поскольку вы, кажется, используете PHP, а PHP имеет встроенные функции для генерации JSON (найти json_encode() в руководстве по PHP), это может быть очень простая задача: закодируйте свою структуру данных PHP как JSON и используйте ее как из JavaScript.

Смежные вопросы