Используйте jQuery для замены XMLHttpRequest

Как будто вы пытаетесь получить доступ к объекту, который является null. Рассмотрим ниже пример:

TypeA objA;

. В это время вы только что объявили этот объект, но не инициализировали или не инициализировали. И всякий раз, когда вы пытаетесь получить доступ к каким-либо свойствам или методам в нем, он будет генерировать NullPointerException, что имеет смысл.

См. Также этот пример:

String a = null;
System.out.println(a.toString()); // NullPointerException will be thrown
13
задан ɢʀᴜɴᴛ 8 July 2017 в 16:51
поделиться

6 ответов

$.get(url, {}, callback);

должен добиться цели. Ваш обратный вызов мог быть упрощен как это:

function callback(content){
    $('#decimal').val(content);
}

Или еще короче:

$.get(url, {}, function(content){
    $('#decimal').val(content);
});

И в целом я думаю, что это должно работать:

function createRequest() {
    var keyValue = $('#key').val();
    $('#keypressed').val(keyValue);
    var url = "/My_Servlet/response";
    $.get(url, {key: keyValue}, function(content){
        $('#decimal').val(content);
    });
}
19
ответ дан 1 December 2019 в 20:58
поделиться

Я не думаю, что jQuery реализует функцию тайм-аута, но простой JavaScript делает это скорее приятно:)

2
ответ дан 1 December 2019 в 20:58
поделиться

Выньте проверки состояния и readyState. jQuery только называет Ваш обратный вызов на успех. Ваш обратный вызов предоставляется аргументы (data, textStatus), таким образом, необходимо использовать data вместо req.responseText.

window.setTimeout(), как предложено другим ответом не сделает то, что Вы хотите - который только ожидает и затем вызывает Вашу функцию однажды. Необходимо использовать window.setInterval() вместо этого, который будет периодически вызывать функцию, пока Вы не отмените ее.

Так, таким образом:

var interval = 500; /* Milliseconds between requests. */
window.setInterval(function() {
    var val = $("#key").val();
    $("#keypressed").val(val);
    $.get("/My_Servlet/response", { "key": val }, function(data, textStatus) {
        $("#decimal").val(data);
    });
}), interval);
3
ответ дан 1 December 2019 в 20:58
поделиться

Нет никакой потребности установить ПОЛУЧИТЬ параметры на URL, jQuery установит их автоматически. Попробуйте этот код:

var key = document.getElementById("key");
[...]
var url = "/My_Servlet/response";
$.get (url, {'key': key}, function (responseText)
{
    var decimal = document.getElementById ('decimal'); 
    decimal.value = responseText;
});
2
ответ дан 1 December 2019 в 20:58
поделиться

Согласно документы , аргументы jQuery.get url, data, callback, не url, callback.

вызов А к функции setTimeout JavaScript в конце Вашей функции обратного вызова должен быть достаточным, чтобы заставить это постоянно выполняться.

2
ответ дан 1 December 2019 в 20:58
поделиться

В конце я предполагаю, что он был добавлен тип. Это, кажется, работает на меня.

  function convertToDecimal(){ 
    var key = document.getElementById("key"); 
    var keypressed = document.getElementById("keypressed"); 
    keypressed.value = key.value; 
    var url = "/My_Servlet/response?key="+ escape(key.value);
    jQuery.get(url, {}, function(data){
       callback(data);}
       , "text" );
  }

  function callback(data){
    var decimal = document.getElementById('decimal');
    decimal.value = data;
    clear();
  }

Спасибо Все для справки. Я проголосую за Вас.

0
ответ дан 1 December 2019 в 20:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: