0

解決策: 送信ボタンを削除して、通常のボタンを使用する必要がありました。このコードの残りの部分は機能します。HTMLフォームも削除しました。

formdataを使用してajaxで画像とテキストをphpスクリプトに送信しようとしています。これは私が得たものです:

$ajax_uploadImage = function (form)
{
    var data = new FormData();

    data.append('title', form.find('#title').val());
    data.append('comment', form.find('#comment').val());
    data.append('image', form.find('#image').prop('files')[0]);

    $.ajax({
        url: '../php/upload_image.php',
        data: data,
        type: 'POST',
        processData: false,
        contentType: false,
        success: function (data) {
            alert('something');
        }
    });
}

関数パラメーターのフォームは通常の html フォームです。html のフォームは次のとおりです。

<form enctype="multipart/form-data" id="upload_image">
    <label for="title">Title:</label>
        <input type="text" id="title" name="title" />
    <br />

    <label for="comment">Comment:</label>
    <input type="text" id="comment" name="comment" />
    <br />

    <label for="image">Image:</label>
    <input type="file" id="image" name="image" />
    <br />

    <input type="submit" value="Upload picture" name="submit">
    <hr />
</form>

成功したアラートはトリガーされません。誰か助けてもらえますか?

編集: PHP を追加しますが、何もしません:

<?php echo 'something'; ?>
4

2 に答える 2

0

次のようなフォーム アクションを追加してみてください。

<form enctype="multipart/form-data" id="upload_image" action="upload_image.php">
于 2012-07-24T23:35:54.047 に答える
0

現在、jQuery オブジェクトを に保存していますが、FormDataこれは機能しません。代わりに、これらの要素の値を使用してください。ファイル入力の場合、DOM 要素Fileのプロパティでオブジェクトを使用する必要があります。files

data.append('title', form.find('#title').val());
data.append('comment', form.find('#comment').val());
data.append('image', form.find('#image').prop('files')[0]);
于 2012-07-24T23:10:24.510 に答える