使用表单数据上传图像会产生不必要的响应

时间:2017-12-25 10:06:35

标签: php jquery ajax form-data

当我上传ajax图像上传成功的图像时,我遇到了ajax表单数据上传的一个问题,但是由于我无法在我的代码中写回信号而无法在我收到的问题中写回信。

请有人帮忙解决这个问题。

我的Ajax代码。

$("form[name='messageFrom']").submit(function(e) {
    var formData = new FormData($(this)[0]);
    $.ajax({
        url: "controller.php",
        type: "POST",
        data: formData,
        async: false,
        success: function (msg) {

            $('#chatBord').append(msg);
            $('#message').val('');
            $('#imageMessage').val('');
        },
        cache: false,
        contentType: false, 
        processData: false
    });
    e.preventDefault();
});

我从ajax收到的回复

JFIF > CREATOR:gd-jpeg v1.0(使用IJG JPEG v62),默认质量 C$。 “,#(7),01444'9 = 82<.342 C2!! 222222222222222222222222222222222222222222222222222 @ ”

我的PHP代码

$message=$_REQUEST['message'];
$group_id=$_REQUEST['sendMessageGroupID'];
$imageName=""; $msg_type="";

if(!empty($_FILES['imageMessage']['name'])){
    $extension=pathinfo($_FILES['imageMessage']['name'],PATHINFO_EXTENSION);
    $imageName=md5(time().rand(100,999)).".".$extension;
    image_resize($_FILES['imageMessage']['tmp_name']);
    move_uploaded_file($_FILES['imageMessage']['tmp_name'],"../API/message/".$imageName);
    $message = BASEPATH.'message/'.$imageName;
    $msg_type="2";
}
else {
    $msg_type="1";
}
addMsgInGroup($group_id,$_SESSION['user_id'],$msg_type,$message); ?>

在addMsgInGroup中只有一个插入查询。

1 个答案:

答案 0 :(得分:0)

您应该在上传图片时通过发送序列化数据来尝试此操作 这就是你应该做的,

$("form[name='messageFrom']").submit(function(e) {
    $.ajax({
        url: "controller.php",
        type: "POST",
        data: $("form[name='messageFrom']").serialize(),
        async: true,
        success: function (msg) {

            $('#chatBord').append(msg);
            $('#message').val('');
            $('#imageMessage').val('');
        },
        cache: false,
        contentType: false, 
        processData: false
    });
    e.preventDefault();
});

我在您的代码中进行了两处更改

data: $("form[name='messageFrom']").serialize(),
async: true,

在你的ajax代码中,我通过序列化发送代码并创建了aysnc:true

在controller.php的PHP端,使用$_POST

接收它

试试这个并告诉我这是否适合你:)