Javascript MPDF库导致ajax(blob)下载时出现缓存问题

Javascript MPDF库导致ajax(blob)下载时出现缓存问题,javascript,php,jquery,wordpress,Javascript,Php,Jquery,Wordpress,例如,当我单击“下载”时,它正在从上一次单击下载数据 我认为blob是问题的根源,但是如果没有它,就不可能让jQuery工作 这是我的php和ajax代码,工作正常,但我想还有服务器缓存 $.ajax({ dataType: 'native', url: printBulkWpApi.url, type: "POST", cache: false, xhrFields: { responseType: 'blob' }, data: { ids: da

例如,当我单击“下载”时,它正在从上一次单击下载数据

我认为blob是问题的根源,但是如果没有它,就不可能让jQuery工作

这是我的php和ajax代码,工作正常,但我想还有服务器缓存

$.ajax({
  dataType: 'native',
  url: printBulkWpApi.url,
  type: "POST",
  cache: false,
  xhrFields: {
    responseType: 'blob'
  },
  data: {
    ids: data.join(","),
  },
  success: function (data) {
    var link = document.createElement('a');
    // Add the element to the DOM
    link.setAttribute("type", "hidden"); // make it hidden if needed
    link.download = "single_issues_print" + new Date() + ".pdf";
    link.href = window.URL.createObjectURL(data);
    document.body.appendChild(link);
    link.click();
    link.remove();
  }
});

公共功能打印功能批量操作(){
函数打印\回调\批量\操作(WP\ REST\请求$Request){
全球$wpdb;
需要_once plugin_dir_path(_FILE__)。“../vendor/autoload.php”;
$filename=“single\u issues\u print.pdf”;
header('Cache-Control:no-Cache,no-store,必须重新验证');//HTTP 1.1
标头('Pragma:no cache');//HTTP 1.0
标头('Expires:0');//代理
标题(“内容处置:附件;文件名=”.$filename.”;
ob_clean();
readfile($filename);
$ids=$_POST['ids'];
$ids\u数组=分解(“,”,$ids);
$array=[];
$mpdf=new\mpdf\mpdf();
foreach($id\u数组作为$id){
//echo$id;
$results=$wpdb->get_results(“SELECT*FROM orders WHERE orders.id=$id”);
$mpdf->WriteHTML('.$results[0]->item_title');
$array[]=$results;
}
//变量转储($数组);
$mpdf->Output('single\u issues\u print.pdf',\mpdf\Output\Destination::FILE);
}
注册剩余路由('order center/v1','bulk\u print/?',数组(
'方法'=>'发布',
“回调”=>“打印\回调\批量\操作”,
) );
}

问题出在我的java脚本代码中。
link.href=window.URL.createObjectURL(数据)
正在创建一个对象URL,该URL与在我的根目录上生成的pdf文件不同。
我已将
link.href=window.URL.createObjectURL(数据)
更改为
link.href=domain.name/pdf\u file\u name
,问题已解决。

问题出现在我的java脚本代码中。
link.href=window.URL.createObjectURL(数据)
正在创建一个对象URL,该URL与在我的根目录上生成的pdf文件不同。
我已将
link.href=window.URL.createObjectURL(数据)
更改为
link.href=domain.name/pdf\u file\u name
,问题已经解决。

你好,Kjire,欢迎来到堆栈溢出。如果打开开发人员工具(浏览器中的F12),单击“网络”选项卡,检查“禁用缓存”是否已启用,然后测试下载,会发生什么情况?如果您没有遇到缓存问题,这意味着这是一个客户端问题。如果是这种情况,请使用
url:printBulkWpApi.url+'?'+(新日期()).getTime(),
来防止客户端缓存。您好@SaschaM78,谢谢您的来信。我发现了我的错误,它在我的js代码中。link.href=window.URL.createObjectURL(数据)正在创建一个URL,该URL与保存pdf的根目录上的URL不同。很高兴听到您能够修复它。你介意为你自己的问题写一个简短的答案,并将其标记为解决方案(我想等待大约2天后可能会这样)。否则,人们可能仍然会试图为您的问题找到解决方案。谢谢你好,Kjire,欢迎来到Stack Overflow。如果打开开发人员工具(浏览器中的F12),单击“网络”选项卡,检查“禁用缓存”是否已启用,然后测试下载,会发生什么情况?如果您没有遇到缓存问题,这意味着这是一个客户端问题。如果是这种情况,请使用
url:printBulkWpApi.url+'?'+(新日期()).getTime(),
来防止客户端缓存。您好@SaschaM78,谢谢您的来信。我发现了我的错误,它在我的js代码中。link.href=window.URL.createObjectURL(数据)正在创建一个URL,该URL与保存pdf的根目录上的URL不同。很高兴听到您能够修复它。你介意为你自己的问题写一个简短的答案,并将其标记为解决方案(我想等待大约2天后可能会这样)。否则,人们可能仍然会试图为您的问题找到解决方案。谢谢
public function print_function_bulk_actions(){
  function print_callback_bulk_actions (WP_REST_Request $request) {

    global $wpdb;

    require_once plugin_dir_path( __FILE__ ) . '../vendor/autoload.php';  

    $filename = "single_issues_print.pdf";

    header('Cache-Control: no-cache, no-store, must-revalidate'); // HTTP 1.1
    header('Pragma: no-cache'); // HTTP 1.0
    header('Expires: 0'); // Proxies
    header("Content-Disposition: attachment; filename='.$filename.'");
    ob_clean();
    readfile($filename);


    $ids = $_POST['ids'];
    $ids_array = explode(",", $ids);

    $array = [];
    $mpdf = new \Mpdf\Mpdf();
    foreach($ids_array as $id){
      // echo $id;
      $results = $wpdb->get_results("SELECT * FROM orders WHERE orders.id = $id");
      $mpdf->WriteHTML('<h1>'.$results[0]->item_title.'</h1>');
      $array[] = $results;
    }
    // var_dump($array);

    $mpdf->Output('single_issues_print.pdf', \Mpdf\Output\Destination::FILE);
  }



  register_rest_route( 'order-center/v1', 'bulk_print/?', array(
    'methods' => 'POST',
    'callback' => 'print_callback_bulk_actions',
  ) );
}