ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

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

2019-06-10 14:20:11  阅读:94  来源: 互联网

标签:jquery javascript


我需要返回动态加载的内容.我认为这是实现它的方法,但该函数返回空白.为了使用从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){}部分.

这样,你实际上定义: –

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

标签:jquery,javascript
来源: https://codeday.me/bug/20190610/1212698.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有