Javascript JQuery и использование Eval - PullRequest
0 голосов
/ 30 марта 2011

я использую плагин jquery для чтения файла данных (data.html)

data.html имеет формат ниже

[10,20,30,40,50]

мой запрос данных jquery и javascript для возврата значенийниже

function test(){
  var result=$.ajax({
    url:'data.html',
    type:'get',
    dataType:'text',
    async:false,
    cache:false
  }).responseText
return result;};
var my=test();
alert(my[0])

я хочу получить эти значения в формате массива, т.е. я хочу, чтобы my [0] было значением 10, но вместо этого я получил "[".Если я использую функцию eval

 my=eval(test());

, я могу получить 10, но есть ли другой лучший способ сохранить возвращенные вызовы ajax в массив вместо строки?

Спасибо

Я попробовал следующий ответ, и я немного озадачен, следующий код приводит к тому, что myArray имеет значение null (в firebug), но я поставил async: false, тогда он работает.Зачем мне нужен async: false для хранения значений в массиве?(/95799/kak-ya-mogu-zastavit-jquery-vypolnyat-sinhronnyi-a-ne-asinhronnyi-ajax-zapros)

jQuery.extend({getValues: function(url) {
var result = null;
$.ajax({
    url: url,
    type: 'get',
    dataType: 'json',
    cache: false,
    success: function(data) {result = data;}
    });
return result;}});
myArray=$.getValues("data.html");
alert(myArray[1]);

Ответы [ 2 ]

5 голосов
/ 30 марта 2011

Вам не нужно eval.Просто укажите правильные dataType: 'json':

function test() {
    return $.ajax({
        url: 'data.html',
        type: 'get',
        dataType: 'json',
        async: false,
        cache: false
    }).responseText;
}
var my = test();
alert(my[0]);

или, что еще лучше, сделайте это асинхронно:

function test() {
    $.ajax({
        url: 'data.html',
        type: 'get',
        dataType: 'json',
        cache: false,
        success: function(result) {
            alert(result[0]);
        }
    });
}
test();
0 голосов
/ 16 января 2014

Я думаю, что jquery $ .getScript ('data.html', function () {alert ("success" + $ (this) .text ())} может быть проще. У меня не было времени попробовать это, если Я на правильном пути, улучшите этот ответ, если нет, я буду счастлив узнать сейчас ...

...