JSON / JQuery для второго Div возвращает NaN - PullRequest
0 голосов
/ 13 октября 2011

Я извлекаю ряд данных с mysql-сервера, используя php, затем кодирую их в массив json. Затем я извлекаю информацию, используя следующий PHP. Странная часть в том, что если я отправляю «vname» его собственному div, я получаю «NaN» в результате. Если я показываю это в первом div, все получается хорошо. Есть идеи почему? Кстати, правильно ли мне использовать .html для отправки в div? Я пробовал .appendTo и .text с одинаковым результатом.

<h3>Output: </h3>
<div id="output">Content1</div>
<div id="username">content2</div>

<script id="source" language="javascript" type="text/javascript">

$(function() {
    $.ajax({
        url: 'api.php',
        dataType: 'json',
        success: function(data) {
            var id = data[0];
            var vname = data[1];
            var message = data[2];
            var timestamp = data[3];

            $('#output').html(+id + timestamp + message);
            $('#username').html(+vname);
        }
    });
});

</script>

Ответы [ 3 ]

4 голосов
/ 13 октября 2011

Я собираюсь угадать это из-за первого +.Javascript пытается ничего не добавить ко всем прочим вещам, что вывело бы NaN

 $('#output').html(id +timestamp +message );   
$('#username').html( vname );

В этом случае text() может быть лучше использовать, потому что в HTML нет элементов HTML.ваши строки, но это действительно не имеет значения.

3 голосов
/ 13 октября 2011

+variable - сокращение для приведения переменной к числу: Унарный плюс / минус (MDN)

var x = "5";
+x; //Gives you 5 as a number
x = "Hello";
+x; //Gives you NaN

Вы можете использовать обычный append .

$('#output').append(id + timestamp + message);
$('#username').append(vname);
0 голосов
/ 13 октября 2011
$('#output').html(+id + timestamp + message);
$('#username').html(+vname);

Это, вероятно, ваша проблема. Знак плюс перед переменными выдает ошибку. Если вы пытаетесь объединить (сложить вместе) существующее значение и ваш ответ от ajax, измените его на что-то вроде этого:

$('#output').html($('#output').html() + id + timestamp + message);
$('#username').html($('#username').html + vname);
...