0

我不知道为什么我会收到未定义索引的错误。我想我正确地将值发送到 php 。或者我在我的代码中遗漏了什么?

这是我使用的 jquery 代码:

$(function() {
            $('button').button();
            $('.update-profile-pic').click(function() {
                $('#dialog').dialog({
                    width:350,
                    modal:true,
                    buttons: {
                        'Upload': function() {
                            $.ajax({
                                url: 'upload-image.php',
                                method: 'post',
                                data: { uploadedfile: $('.profile-pic-name').val().trim() },
                                success: function(data) {
                                    $('.new-profile-pic').html(data);
                                }
                            });
                        }
                    }
                });
            });
        });

这是我的html代码:

<button class="update-profile-pic">Update Profile Picture</button>
<div id="dialog">
    <p class="new-profile-pic">
        <!--Image should be here-->
    </p>
    <form enctype="multipart/form-data">
        <input type="hidden" name="MAX_FILE_SIZE" value="100000">
        <input class="profile-pic-name" name="uploadedfile" type="file">
    </form>
<div>

这是我的php代码:

   <?php
$target_path = "uploads/";
$target_path = $target_path . basename( $_FILES['uploadedfile']['name']); 

if(move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $target_path)) {
    echo '<img alt="" src="'.$target_path.'">';
} else{
    echo "There was an error uploading the file, please try again!";
}
?>

这是我点击上传后萤火虫控制台的结果:

在此处输入图像描述

这是示例错误输出:

在此处输入图像描述

4

4 回答 4

2

你可以试试以下

       success: function(data) {

         $('.new-profile-pic').html(data.uploadedfile);

          }

您是否检查过以下内容与您正在寻找的内容相似

http://www.9lessons.info/2011/08/ajax-image-upload-without-refreshing.html

于 2012-09-23T09:56:59.190 回答
1

我可能是错的,但由于您使用的是 Ajax,我认为您的 PHP 代码不会在$_FILE全局中查找文件。相反,数据将是$_POST全局的(它将是 JSON,因此您必须json_decode()首先使用它)。但是,所有将存在的只是文件的名称,而不是实际的文件。您需要FormData在 JavaScript 文件中创建一个新对象并将其传递给文件输入的引用。

于 2012-09-23T09:54:17.477 回答
1

这不起作用的原因是您无法通过 AJAX 发送文件。您将需要使用插件或隐藏的 iFrame。请参阅http://ramui.com/articles/ajax-file-upload-using-iframe.html

于 2012-09-23T10:02:38.323 回答
0

是的@richoffrails 说文件实际上并未上传到服务器,请检查您的 $_FILES 数组以获取更多信息。

您可以使用这个或许多其他可用于通过互联网上传 ajax 文件

http://www.uploadify.com/

于 2012-09-23T10:04:20.887 回答