Как будто вы пытаетесь получить доступ к объекту, который является null
. Рассмотрим ниже пример:
TypeA objA;
. В это время вы только что объявили этот объект, но не инициализировали или не инициализировали. И всякий раз, когда вы пытаетесь получить доступ к каким-либо свойствам или методам в нем, он будет генерировать NullPointerException
, что имеет смысл.
См. Также этот пример:
String a = null;
System.out.println(a.toString()); // NullPointerException will be thrown
$.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);
});
}
Я не думаю, что jQuery реализует функцию тайм-аута, но простой JavaScript делает это скорее приятно:)
Выньте проверки состояния и 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);
Нет никакой потребности установить ПОЛУЧИТЬ параметры на 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;
});
Согласно документы , аргументы jQuery.get url, data, callback
, не url, callback
.
вызов А к функции setTimeout JavaScript в конце Вашей функции обратного вызова должен быть достаточным, чтобы заставить это постоянно выполняться.
В конце я предполагаю, что он был добавлен тип. Это, кажется, работает на меня.
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();
}
Спасибо Все для справки. Я проголосую за Вас.