Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将数据从javascript发送到php以生成pdf,但不会';行不通_Javascript_Php_Ajax_Fpdf - Fatal编程技术网

将数据从javascript发送到php以生成pdf,但不会';行不通

将数据从javascript发送到php以生成pdf,但不会';行不通,javascript,php,ajax,fpdf,Javascript,Php,Ajax,Fpdf,我正在使用JavaScript从用户完成的表单中获取信息,然后将这些数据发送到PHP,并使用FPDF生成PDF。问题是我希望浏览器要求用户保存PDF或在线查看,但 我不知道怎么做。PDF生成正确,但仅当我将其直接保存到我指定的特定路径时 问题是,你们如何将数据从JavaScript发送到PHP以生成PDF文件,然后浏览器要求用户打开或下载,或者我如何制作一个函数,用户可以检索此PDF JavaScript: function senddata() {//this activates when i

我正在使用JavaScript从用户完成的表单中获取信息,然后将这些数据发送到PHP,并使用FPDF生成PDF。问题是我希望浏览器要求用户保存PDF或在线查看,但 我不知道怎么做。PDF生成正确,但仅当我将其直接保存到我指定的特定路径时

问题是,你们如何将数据从JavaScript发送到PHP以生成PDF文件,然后浏览器要求用户打开或下载,或者我如何制作一个函数,用户可以检索此PDF

JavaScript:

function senddata() {//this activates when i push a button not a submit
    var peticion = new XMLHttpRequest();
    peticion.open('POST', 'generatepdf.php');
    var nueva2 = {};
    var key;

    for (i = 0; i < 6; i++) {
        key = document.forms[0].elements[i].id;
        nueva2[key] = document.forms[0].elements[i].value;
    }//here i take my data from the form and make an object

    var json = JSON.stringify(nueva2);//here i tranform my object to json string so i can send it to my php

    var parametros = "json_string=" + json;//here I do this so later I can easily transform the $_POST to an array in the form json_decode($_POST["json_string"],true); 

    peticion.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");

    peticion.send(parametros);//it sends ok
}
函数senddata(){//当我按下一个按钮而不是提交时,它会激活
var peticion=new XMLHttpRequest();
open('POST','generatepdf.php');
var numeva2={};
var键;
对于(i=0;i<6;i++){
key=document.forms[0]。元素[i]。id;
nueva2[key]=document.forms[0]。元素[i]。值;
}//在这里,我从表单中获取数据并创建一个对象
var json=json.stringify(nueva2);//这里我将我的对象转换为json字符串,以便将其发送到我的php
var parametros=“json_string=“+json;//在这里,我稍后会这样做,我可以轻松地将$_POST转换为json_decode形式的数组($_POST[“json_string”],true);
setRequestHeader(“内容类型”、“应用程序/x-www-form-urlencoded”);
发送(参数);//它发送ok
}
带有FPDF类和其他东西的PHP

<?php

require('fpdf/fpdf.php');
require('functions.php');

if($_SERVER['REQUEST_METHOD']=='POST'){

    $datos=json_decode($_POST["json_string"],true); //here i have my data in an array format so i can use the parameters to fill my pdf fields

    //...lots of pdf things here...//

 $pdf->Output('F',"pdfs/Cotizacion ".$datos["nombres"]." ".$datos["apellidos"].".pdf");//this works but never ask the user
 //$pdf->Output('D',"pdfs/Cotizacion ".$datos["nombres"]." ".$datos["apellidos"].".pdf");//this should force a dowload or send to the browser but doesnt work
 //$pdf->Output();//this should send to the browser but doesnt work
    }

要在浏览器中内联查看PDF,应使用
I
变量。查看完整文档


我也不认为同时用两种方法输出文件是可行的。这可能会相互冲突。最好的方法是测试每种方法,如果它们相互冲突,只需添加一个条件,让用户决定是下载还是在浏览器中查看。希望这能有所帮助。

我不知道你的意思,但你可能想了解一下内容配置:谢谢你的回答,我没有使用两种输出方法,只是这样写来显示我的不同尝试,只是尝试了“I”,但不起作用。不管怎样,我编辑了我原来的帖子以澄清问题