使用formdata使用ajax将数据发送到PHP

时间:2012-07-24 23:08:39

标签: php javascript ajax html5

解决方案:我不得不放下sumbmit按钮并使用常规按钮。此代码的其余部分有效。我也删除了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'; ?>

2 个答案:

答案 0 :(得分:0)

现在您正在FormData中存储一个无法正常工作的jQuery对象。请改用这些元素的值。如果是文件输入,则需要使用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]);

答案 1 :(得分:0)

尝试添加表单操作,例如:

<form enctype="multipart/form-data" id="upload_image" action="upload_image.php">