1

jQueryを介してリモートサーバーにファイルをアップロードしようとしていますが、機能していないようです。

ユーザーはPDFファイルをアップロードできる必要があります。PDFファイルはサーバーによって処理され、ルートフォルダーに保存されます。

jQuery

$('form').submit(function (e) {
    var fd = new FormData();
    fd.append('file', $('#file')[0].files[0]);
    $.ajax({
        cache: false,
        beforeSend: function (xhr) {
            xhr.setRequestHeader("Cache-Control", "no-cache");
            xhr.setRequestHeader("pragma", "no-cache");
        },
        url: 'http://www.codekraken.com/testing/pointify/test.php?callback=?',
        data: fd,
        dataType: "json",
        processData: false,
        contentType: false,
        type: 'POST',
        success: function (data) {
            console.log(data);
        },
        error: function (data) {
            console.log(data);
        }
    });
    e.preventDefault();
});

PHP

<?php
header('content-type: application/json; charset=utf-8');

$name = $_FILES["fd"]["name"];
echo ($_GET['callback'] . '('.json_encode($name).')');
?>

HTML

<form>
    <input type="file" id="file" name="file">
    <input type="submit">
</form>

などのファイルを送信してから[送信input.pdf]を押すと、応答が返され(null)ます。ファイルの名前を取得することを期待しますinput.pdf。これは、このプロセスの重要なステップが欠落していることを意味します。

4

2 に答える 2

2

私はこれを推測します

$name = $_FILES["fd"]["name"];

する必要があります

$name = $_FILES["file"]["name"];
于 2013-02-07T23:19:49.640 に答える
0

これを見えるようにしたいので、質問の大きな問題に答えています。

JSONPリクエスト専用なので、使用POSTできません。その後、を使用CORSして問題を解決できます。

有効にできる多くの種類のサーバーがリストされているサイトを見つけましたCORS。調査することをお勧めします。

私の場合、PHPコードで次のヘッダーを使用しました。

header("Access-Control-Allow-Origin: *");

そのページはすべてのリクエストに対して開かれますが、それでも私のjQueryAJAXコードでは機能しませんでした。これを修正するには、ヘッダーを設定するコードの部分を削除する必要がありました。これは、これらのリクエストを行うときに許可されていないようです。だから、私はこの部分を削除しました:

beforeSend: function (xhr) {
            xhr.setRequestHeader("Cache-Control", "no-cache");
            xhr.setRequestHeader("pragma", "no-cache");
        },
于 2013-02-07T23:53:45.223 に答える