jquery.min.js:9600 XHR 加载失败:POST

jquery.min.js:9600 XHR failed loading: POST

我想将 pdf 从 jspdf 上传到我的服务器。 我用 Ajax 作为它。

我通过表单中的函数打开 Javascript。

onsubmit="pdferzeugen();"

在 ajax 代码之上,我通过“jspdf”创建了 pdf 并将其保存到 datauri (base64)。

Javascript:

var datauri = pdf.output('datauri');
var data = new FormData();
data.append("pdf_data", datauri);
    
$.ajax({
    url: "./uploads/upload.php",
    type: "POST",
    processData: false,
    contentType: false,
    data: data,
});

upload.php:

if(!empty($_POST['pdf_data'])){
    $data = $_POST['pdf_data'];
    $fname = "test.pdf"; // name the file
    $file = fopen("./uploads/" .$fname, 'w'); // open the file path
    fwrite($file, $data); //save data
    fclose($file);
}

但这对我不起作用。 Chrome 总是说:

jquery.min.js:9600 XHR failed loading: POST "http://app-her-visitor/begehung/uploads/upload.php".

我在整个 google 中搜索了这个错误,但没有成功。 我希望你能帮助我:-)

感谢帮助

问候

问题出在您发送的数据之间。在通过 ajax 发送之前验证您的数据,因为数据类型应该是:

  1. PlainObject 或 String 或 Array & 成功方法必须至少有一个参数
  2. 类型:函数(任何数据、字符串 textStatus、jqXHR jqXHR)

祝你好运。

答案是我在提交表单后刷新页面并将base64数据发送到我的服务器。

我需要阻止它刷新页面,这样它才能成功发送数据。

HTML

onsubmit="pdferzeugen();return false"

Javascript

var datauri = pdf.output('dataurl');

$.ajax({
    url: "./uploads/upload.php",
    type: "POST",
    data: { pdf: datauri },
    success: function(data) {},
});

PHP

$pdf = str_replace('data:application/pdf;base64,', '', $_POST['pdf']);
$pdf_decoded = base64_decode ($pdf);
$pdf = fopen ('Begehungsprotokoll.pdf','w');
fwrite ($pdf,$pdf_decoded);
fclose ($pdf);

onsubmit 中的 return false 将阻止它重新加载页面,现在 pdf 上传到我的服务器。