如何在浏览器控制台中记录使用 jQuery AJAX 运行的 PHP 文件?

Posted

技术标签:

【中文标题】如何在浏览器控制台中记录使用 jQuery AJAX 运行的 PHP 文件?【英文标题】:How to log PHP file run with jQuery AJAX in browser console? 【发布时间】:2018-02-02 10:50:00 【问题描述】:

我有一个进行数据处理的 php 文件。它由$.ajax() 运行,有时处理需要很长时间才能处理的大文件。我需要在浏览器控制台中记录一些关于正在进行的进程的信息,这些信息on the go,而不仅仅是 PHP 文件完成运行时。

从我所做的研究中,我发现有两个困难:

    让 PHP 在完成之前吐出一些东西 让 jQuery/JS 随时随地显示

为了解决 #1,我已经尝试过:

echo "started"."<br>";

foreach (array("done this", "done that","had a coffee","burp") as $msg) 
    sleep(3);
    echo $msg."<br>";
    flush();
    ob_flush();

flush(); ob_flush(); 应该可以完成这项工作,尽管您可以测试 here 它并没有像预期的那样严格显示 3s。有什么建议让它按预期显示吗?

至于如何解决 #2,我已经探索了一个涉及 XMLHttpRequest 的解决方案,但我不熟悉这个主题,所以不知道要寻找什么,也不知道它是否是正确的方向......

这是我要运行的测试代码:

$("#run").click(function(e) 
  $.ajax(
    url: "http://constances-web-dev.vjf.inserm.fr/constances-web/ajax-test.php",
    xhr: function() 
      // get the native XmlHttpRequest object
      var xhr = $.ajaxSettings.xhr();
      xhr.addEventListener('readystatechange', function(e) 
        console.log(e)
      );
      // set the onprogress event handler
      //xhr.onprogress = function(evt) console.log(evt.target.response)  ;
      // set the onload event handler
      return xhr;
    ,
    success: function(msg) 
      console.log(msg);
    ,
    error: function(msg) 
      console.log("Erreur: " + msg);
    
  )
)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button id="run">go</button>

附属问题:是否有一种(简单的)方法可以绕过跨域限制,以使 AJAX 示例在 SO sn-p 中工作?

【问题讨论】:

对于您的附属问题,很遗憾,答案是。 Here 是 SO 解释。 嘿@freginold 非常感谢您的帮助!想知道为什么由于代码涉及无法运行的 ajax 而推荐使用 snipet? @freginold 也感谢 +1,据我所知,这让我获得了达到 50 所需的 5 声誉。我现在是一个大女孩,可以发表评论!太棒了! 您仍然可以查看是否生成了任何控制台消息或错误,具体取决于示例,它提供了一种更好的方式来组织代码,而不仅仅是代码块。 好的,谢谢 【参考方案1】:

作为一种解决方法,我在 write2log 函数中添加了一个日志文件

static function log2File($string, $logFileName) 
        if (substr($string,0,1 ) == "\n")
            exec("echo '".date('Y-m-d_H:i:s')." ".addslashes(substr($string,1))."' >> ".$logFileName,$output,$status);
        else
            exec("echo -n ".addslashes($string)."' >> ".$logFileName,$output,$status);
    

然后我可以tail -f日志查看事情的进展

但这需要 ssh 访问服务器,所以 我仍然有兴趣弄清楚如何登录到控制台

【讨论】:

以上是关于如何在浏览器控制台中记录使用 jQuery AJAX 运行的 PHP 文件?的主要内容,如果未能解决你的问题,请参考以下文章

JQuery源码阅读记录

你如何使用 jQuery Deferreds 数组? [复制]

如何将整个jqGrid传递给Java控制器

您如何使用 JS 或 jQuery 从引导 datetimepicker 中控制台记录日期 [重复]

JQuery概述

JQuery AJAX介绍