使用jQuery替换XMLHttpRequest

13 javascript ajax jquery

我是JavaScript库的新手.我想用jQuery替换我当前的代码.我当前的代码如下所示:

var req;

function createRequest() {
   var key = document.getElementById("key");
   var keypressed = document.getElementById("keypressed");
   keypressed.value = key.value;
   var url = "/My_Servlet/response?key=" + escape(key.value);
   if (window.XMLHttpRequest) {
      req = new XMLHttpRequest();
   } else if (window.ActiveXObject) {
      req = new ActiveXObject("Microsoft.XMLHTTP");
   }
   req.open("Get", url, true);
   req.onreadystatechange = callback;
   req.send(null);
}

function callback() {
   if (req.readyState == 4) {
      if (req.status == 200) {
         var decimal = document.getElementById('decimal');
         decimal.value = req.responseText;
      }
   }
   clear();
}
Run Code Online (Sandbox Code Playgroud)

我想用一些比jQuery更友好的东西替换我的代码

$.get(url, callback);
Run Code Online (Sandbox Code Playgroud)

但是它不会调用我的回调函数.

我也想调用一个createRequest连续调用的函数.jQuery有一个很好的方法吗?

Las*_*sar 19

$.get(url, {}, callback);
Run Code Online (Sandbox Code Playgroud)

应该做的伎俩.你的回调可以像这样简化:

function callback(content){
    $('#decimal').val(content);
}
Run Code Online (Sandbox Code Playgroud)

甚至更短:

$.get(url, {}, function(content){
    $('#decimal').val(content);
});
Run Code Online (Sandbox Code Playgroud)

总而言之,我认为这应该有效:

function createRequest() {
    var keyValue = $('#key').val();
    $('#keypressed').val(keyValue);
    var url = "/My_Servlet/response";
    $.get(url, {key: keyValue}, function(content){
        $('#decimal').val(content);
    });
}
Run Code Online (Sandbox Code Playgroud)


Wes*_*s P 2

我不认为 jQuery 实现了超时功能,但普通的旧 javascript 做得相当好:)