0

私はこのphpコードを使用して、ユーザーがdojo.enchancedgridをファイルに送信し、自分のマシンにダウンロードできるようにしています。手順は正常に機能しますが、出力csvファイルには引用符のエスケープ行が含まれています。phpがそれらを挿入しないようにするにはどうすればよいですか。function(str)に渡される文字列は問題ありませんが、phpコードを通過した後は異なります。

私のJavaScriptコード:

function exportCsv(){

var g = dijit.byId("grid");
g.exportGrid("csv",{
            writerArgs: {
                separator: ","
            }
            }, function(str){
                alert(str);


                    var form = document.createElement('form');
                    dojo.attr(form, 'method', 'POST');
                    document.body.appendChild(form);
                    dojo.io.iframe.send({
                            url: "csv.php",
                            form: form,
                            method: "POST",
                            content: {exp: str},
                            timeout: 15000
                    });
                    document.body.removeChild(form);

                    }); 

}

私のphpコード:

$time = time();
header("Pragma: public");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Content-type: application/csv");
header("Content-Disposition: attachment; filename=\"grid_$time.csv\"");
$exportedData = $_POST['exp'];
echo $exportedData;

また、サーバーは行にいくつかの分析コードを挿入しています…助けてくれてありがとう。以下は、出力csvファイルです。

Lon、Lat、Network、RouteId、Measure

-74.18143812,40.62733114、\ "Named Route \"、IN278,1

-73.90131905,40.75932358、\ "Named Route \"、IN278,25

-73.8005193,40.73819062、\ "Named Route \"、IN495,10

-73.82437443,40.79381815、\ "Named Route \"、IN678,12

-73.79087796,40.66589334、\ "Named Route \"、\ "NY 27 \"、12

<-Hosting24分析コード->

<-アナリティクスコードの終わり->

4

2 に答える 2

0
  1. クライアント側の文字列(Javascript)で引用符を自分でエスケープし、PHPでエスケープ解除することができます。これにより、プロセス全体を制御できます。
  2. あなたがホスティング業者の「分析コード」を持っている理由は、あなたが無料ホスティングを使用しているからです(私は推測します)。これは分析ではなく広告であり、すべてのhttp応答に追加されます。HTMLページでは、下部の広告のように見えます。AJAXを使用すると、邪魔になります。あなたが実際にホスティングにお金を払っているなら、あなたのホスティング業者に電話して、それらを取り除くように彼に頼んでください。
于 2012-07-31T00:20:34.487 に答える
0

zerkmsが示唆したように、これはおそらくmagic quotes

それらを無効にしてみてください。

于 2012-07-31T00:21:29.143 に答える