2015-07-05 3 views
6

Я использую JSON для отправки данных Ajax. Я получаю запятую номер мобильного телефона из текстового поля ввода. И я преобразовываю его в массив javascript.
Ниже мой код:Javascript массив в массив JSON

var myarray = {}; 
    myarray = this.model.get('mobileno').split(','); 

Результат: MyArray: [ "123", "4567"];

Я собираюсь установить такое же значение для моей модели, как показано ниже:

this.model.set('mobileno',JSON.stringify(myarray)); 

Затем значение становится, как показано ниже:

console.log(this.model.get('mobileno')); 

Результат: MobileNo: «[ «123», «4567»] «

Итак, моя модель стала мне this.model.toJSON();

Результат: Объект {MobileNo: "[" 123" , "4567"]}

До здесь, все правильно. после того, что мне нужно, чтобы установить эту модель на другую модель и делать stringfy даст мне как ниже:

anotherModel.set('data', this.model); 

"данные": { "MobileNo": "[\" 123 \ "\" 456 \ "]"}

Но, мне нужно как "данные": { "MobileNo": [ "123", "456"]}

Ваша помощь будет оценена.

+2

Почему вы преобразовываете массив обратно в JSON? – JJJ

+0

В моем текстовом поле у ​​меня есть разделенный запятой мобильный номер, например, 9845098450,9845098451 и т. Д., Когда я получаю это от модели, я получу как «9845098450», «9845098451» вот так.Мне нужно сделать запрос как {data: {mobileno: ["9845098450", "9845098451"]}}, так как я мог бы это сделать, –

+0

Итак? Зачем для этого нужен JSON? – JJJ

ответ

7

JSON.stringify делает строку из вашего массива. Это явно не то, что вы хотите. Или это то, что вы хотите в этой модели, как вы сказали

До сих пор все правильно.

, но в другой модели вы хотите установить массив не как строку, а как массив. Как я не знаю, что вы делаете с вашим Backbone.js Я пишу это как чистый JavaScript

data = JSON.parse(this.model.get("mobileno")) 

должны делать эту работу. Но вы можете просто установить

data = { "mobileno": myarray } 

BTW. если backbone.js делает не что иное, как запутывание нотации javascript и массива, я бы рекомендовал не использовать его вообще. Как вы сказали нам, backbone.js this.model.get('mobileno') возвращает объект, содержащий поле mobileno. В моем мире логики anything.get('XY') должен вернуть значение XY не объект, содержащий объект XY.

+0

Мне понравилось это. Работает. но в чем проблема с моим кодом? –

+2

Нет проблем с вашим кодом, но с тем, как вы смотрите на объекты javascript, строки и JSON. Фактически JSON - это просто «Обозначение объекта Java Script», поэтому 'JSON.stringify (ARG)' просто возвращает строку, содержимое которой можно скопировать в текст javascript, чтобы записать статус объекта. Поэтому, если вы скажете 'obj = JSON.stringify (obj)' 'obj', будет строка, независимо от того, что было раньше. Если 'obj' была строкой, это будет строка, содержащая цитируемую строку. – ikrabbe

+0

хорошо объяснил. :) –

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