2014-11-26 2 views
0

У меня, похоже, проблема с форматированием строки массива, предоставляемой моим методом ajax. Я пытался установить значение данных непосредственно в userCoor, но он вышел как массив, который должен быть только (см. Рисунок).Javascript извлекает значение строки массива

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

так данные возвращает один массив вместо одномерного массива так, как я полагаю, я изменить, чтобы сделать в одномерный массив

Благодаря

Пример кода

$.ajax({ 
    url: "#", 
    type: "POST", 
    dataType: "json", 
    success: function(data, textStatus, jqXHR) { 

    var userCoor = [ 
     ['300 Tanglin Halt Road, Singapore 148812', 1.3000, 103.8000], 
     ['Temasek Poly, Singapore', 1.346753, 103.932577], 
     ['Temasek Poly, Singapore', 1.346368, 103.932175] 
    ]; 

    console.log(userCoor); 

    console.log(data); 
    } 
}) 

Update

Я теперь изменить DATATYPE текст и он возвращается, как показано ниже в том, как преобразовать этот текст в массив

Сырые данные из источника

['300 Tanglin Halt Road, Singapore 148812',1.3000,103.8000],['Temasek Poly, Singapore',1.346753,103.932577],['Temasek Poly, Singapore',1.346368,103.932175] 

У меня проблема сталкивается с тем, что i hardcod в userCoor работает, но я получаю в ajax-методе, который он не делает userCoor [data], он будет давать однострочный массив вместо 3-мерной матрицы

Вот пример w шляпа это Предположим Two same String but second link not known to be an array

+0

Может быть, ваши данные являются строковыми. Попробуйте это 'console.log (JSON.parse (data));' – Ninad

+0

@Ninad У меня есть эта ошибка Не показано SyntaxError : Неожиданный токен ' –

+0

Данные не являются JSON, это строка. Что вы используете для создания json? –

ответ

0

** с помощью Eval считается злом практика .. **

если вы получаете строку картины: «[бла-бла-бла], [бла-бла-бла]» ..

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

var data = "['300 Tanglin Halt Road, Singapore 148812', 1.3000, 103.8000], ['Temasek Poly, Singapore', 1.346753, 103.932577], ['Temasek Poly, Singapore', 1.346368, 103.932175]"; 
 
var result = eval('(['+ data +'])'); 
 

 
console.log(result);

Это работает для вас? Мне просто интересно, почему вы получаете эту строку с сервера? может быть, если вам нужен массив, вы должны изменить свой серверный метод.

+0

nope it does not work erm, что я хочу достичь, и головоломка меня, когда я жестко закодировал строку, данную мне, она отлично работает, но когда я использую метод ajax, он не работал –