2012-04-02 3 views
2

У меня проблема при передаче данных в .getJSON. Причина этого в том, что мне нужно передать переменные с тем же именем. Таким образом, у меня есть клиент в Python, и я делаю это с этим кодом:.getJSON передающие переменные данные с тем же именем

query_args = { 'name':[var1,var2,var3] } 

output = urllib2.urlopen('http://'+servername+':'+port+'/'+action,urllib.urlencode(query_args,doseq=True)) 

если я пытаюсь сделать это в javasctipt с .getJSON, я стараюсь сделать

$.getJSON(
    "http://servername::8001/SearchNode", 
    { 
     name: "name", 
     name: "google" 
    }, 
    function(data) { 

     $.each(data, function(key, val) { 
      console.log(key); 
      console.log(val); 
     }); 
    } 
); 

Когда я отладки запрос string Я вижу только одну из переменных. Может ли кто-нибудь дать мне простое решение моей проблемы?

С уважением

+0

Еще один приятный вопрос. И ах, удивление, вы только что достигли уровней upvote ;-) – GhostCat

ответ

2

Чтобы передать несколько объектов в пределах одной переменной, которую вы должны использовать другую структуру. В вашем случае вам нужна строка имя и google для отправки. Используя ваш метод, вы просто переопределяете значение имени переменной.

Существует несколько способов решения этой проблемы. Я должен сказать, что я не использовал python какое-то время (так что фитонеры там, не стесняйтесь меня исправлять).

idea 1: Переименуйте параметры в js-коде и соедините их вместе в python. Изменение одной из ключевых ваших 2 параметров, так что они не отменяют ...

$.getJSON(
    "http://servername::8001/SearchNode", 
    { 
     name1: "name", 
     name2: "google" 
    }, 
    function(data) {...} 
) 

... а затем восстановить ваш массив ...

query_args = {'name': [name1, name2] } 

или альтернативы не беспокоить с query_args, а обрабатывать их непосредственно в urllib.urlencode

output = urllib2.urlopen('yoururl', urllib.urlencode({'name':[name1, name2]}, True)) 

идея 2: Это, вероятно, то, что вы хотите сделать. Поместите обе строки внутри массива и отправьте это как параметр. В json.org вы можете посмотреть различные виды данных, отправляемых через ajax. В этом случае, ваш код будет выглядеть следующим образом:

$.getJSON(
    "http://servername::8001/SearchNode", 
    { 
     name: ["name", "google"] 
    }, 
    function(data) {...} 
) 

Используя этот метод, вы можете легко добавить еще больше параметров, не добавляя так много различных переменных, которые вам нужно Concat позже. Поскольку я больше не знаком с python, я не могу сказать вам, как это будет хранить python (возможно, список). Но в любом случае вы также сможете справиться с этой задачей в функции urlencode. (По крайней мере, documentation говорит, что это должна быть последовательность, которая, безусловно, есть в этом списке)

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