代码之家  ›  专栏  ›  技术社区  ›  Pierre

修改jquery update div作为文本输入

  •  0
  • Pierre  · 技术社区  · 15 年前

    所以我把这个文本输入到一个表单中,当用户在文本输入中键入文本时,我想更新一个div。

     <p><label for="movie_name">Film: </label> <input type="text" name="movie_name" class="required" onkeydown="changediv2(this.value)" /></p>
    
     <p><div id="ajax_update"></div></p>
    

    我的js方法:

    function changediv2(str) {
    $('#ajax_update').html(geturl('http://url/search/movie?query='+str));
    }
    

    如果我输入浏览器 http://url/search/movie?query=someString ,我得到一些html显示。 但是当我通过这个ajax调用调用它时,什么都没有发生。。。

    function geturl(addr) {
     var r = $.ajax({
      type: 'GET',
      url: addr,
      async: false
     }).responseText;
     return r;
    }
    

    请帮帮我!:)

    3 回复  |  直到 15 年前
        1
  •  3
  •   karim79    15 年前

    您的函数很可能在客户端接收到ajax响应之前返回。我建议你把这个 async $.ajax 的成功回调,例如:

    function changediv2(addr, str) {
        $.ajax({
          type: 'GET',
          url: addr + str,
          success: function(response) { $('#ajax_update').html(response) }
        });
    }
    
        2
  •  0
  •   Sarfraz    15 年前

    function geturl(addr) {    
     $.ajax({
      type: 'GET',
      url: addr,
      async: false,
      success:function(response) {
       return response;
      };
     });    
    }
    
        3
  •  0
  •   CharlesLeaf    15 年前
    1. 您通过Javascript请求的页面是否在同一台服务器上?因为这是不可能的,除非您使用类似于“jsonp”的东西,而事实可能并非如此。
    2. 我会使用超时/清除超时的情况,这样你就不会经常发送请求了。
    3. 同步请求会锁定整个浏览器,直到它完成,不确定这是否是您想要的/这是否能与键入一起很好地工作。。