微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

javascript – 如何让这个函数返回使用jQuery.ajax检索的值?

我需要返回动态加载的内容.我认为这是实现它的方法,但该函数返回空白.为了使用从jQuery.ajax检索的HTML代码设置htmlCode,我需要做什么?

  // Get directory listing
  function getHTML(instance, current_path, dir) {
    var htmlCode = '';

      jQuery.ajax({
          type: "POST",
          url: "../wp-content/plugins/wp-filebrowser/jquery.PHP",
          dataType: 'html',
          data: {instance: instance, current_path: current_path, dir: dir},
          success: function(html){
              htmlCode = html;
          },
          error: function(e) {
            htmlCode = '[Error] ' + e;
          }
      });

      return htmlCode;
  }

解决方法:

发生这种情况是因为ajax请求需要一些时间来获取html,并且在html准备好之前会触发return语句. Javascript代码执行不等待你的html返回.您实际上可以通过删除返回并发出两个警报来查看此信息.在成功事件中放置一个警报,在放置return语句的位置放置一个警报.第二个警报会提前警告.因此,即使你的html被提取,它也永远不会成功返回到调用函数,因为时间html已经触发了return语句.

如果您严格要求函数getHtml()返回(实际上回调)html作为输出,您可以使用回调,否则您可以使用Nick建议的方式.

以下是如何使用回调: –

function getHTML(instance, current_path, dir,callback) 
{
   var htmlCode = '';

  jQuery.ajax({
      type: "POST",
      url: "../wp-content/plugins/wp-filebrowser/jquery.PHP",
      dataType: 'html',
      data: {instance: instance, current_path: current_path, dir: dir},
      success: function(html){

         callback(html); //instead of a return

      },
      error: function(e) {
        htmlCode = '[Error] ' + e;
      }
  });

}

像这样调用函数

getHTML(instance, current_path, dir,
    function(html)
    {
        //Write code to use the html here - this will run when the getHTML() function does callback with the output html
    }
);

注意函数定义中的callback参数getHTML(instance,current_path,dir,callback)和被调用函数中的相应函数(html){}部分.

这样,你实际上定义: –

>调用函数输出就绪时回调调用函数
>和调用函数在收到回调时执行某些操作.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐