0

我正在尝试通过 jQuery POST 命令传递表单数据(头像和用户 ID),但它不会上传文件。有人可以指出我可能做错了什么吗?这是表格和脚本:

<form id="avatar">
    <script>
    $(document).ready(function()
    {
    var ok = true;

    $('#avatarButton').click(function()
    {
    var id=$("#id").val();
    var avatar = $("#avatar").val();

    if(ok == true)
    {           
        $('.avatarValidation').html("Uploading Avatar").removeClass("error").addClass("success");
        jQuery.post("php/<?php echo $usertype; ?>/avatar.php", {
        id:id,
        avatar:avatar
        },  function(data, textStatus){
        if(data == 1){
            $('.avatarValidation').html("Profile Updated").removeClass("error").addClass("success");
        }
        else if(data == 2){
            $('.avatarValidation').html("Error").removeClass("success").addClass("error");
        }
        });
    }
    else
    {
    $('.avatarValidation').html("No").removeClass("success").addClass("error");
    }
    return false;
    });
    });
    </script>
    <table>
        <tr>
            <td class="textColumn profileColumn">Add Avatar:</td>
            <td class="profileInput inputColumn"><input type="file" id="avatar" name="avatar" value="<?php echo $yourname; ?>"/></td>
        </tr>
        <tr>
            <td colspan="2"><input type="hidden" name="id" id="id" value="<?php echo $yourid; ?>"></td>
        </tr>
        <tr class="buttonSpacer"></tr>
        <tr>
            <td colspan="2">
                <input type="submit" class="submitButton" id="avatarButton" value="Upload Avatar" />
                <span class="submitValidation avatarValidation"></span>
            </td>
        </tr>
    </table>
    </form>

这是表单数据传递到的 PHP:

<?php
$id= mysqli_real_escape_string($con, $_REQUEST["id"]);
$avatar= mysqli_real_escape_string($con, $_REQUEST["avatar"]);

if ($_FILES['$avatar']['error'] > 0) {
    echo "2"; //Echo Error
} else {
    // array of valid extensions
    $validExtensions = array('.jpg', '.jpeg', '.gif', '.png');
    // get extension of the uploaded file
    $fileExtension = strrchr($_FILES['$avatar']['name'], ".");
    // check if file Extension is on the list of allowed ones
    if (in_array($fileExtension, $validExtensions)) {
        $newName = time() . '_' . $_FILES['$avatar']['name'];
        $destination = 'avatar/' . $newName;
        if (move_uploaded_file($_FILES['$avatar']['tmp_name'], $destination)) {
            echo "1"; //Echo Success
        }
    } else {
        echo "2"; //Echo Error
    }
}
?>
4

1 回答 1

1

你可以试试这个插件,它会为你处理大部分的后台工作。他们也有 PHP 示例:

http://blueimp.github.io/jQuery-File-Upload/

于 2013-05-13T19:26:46.177 回答