为什么我收到未定义索引的错误我正在使用jquery ajax

时间:2012-09-23 09:32:44

标签: php forms jquery modal-dialog

我不知道为什么我收到未定义索引的错误。我想我正确地将值发送到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!";
}
?>

点击上传后,这是firebug控制台的结果:

enter image description here

以下是示例错误输出:

enter image description here

4 个答案:

答案 0 :(得分:2)

您可以尝试以下

       success: function(data) {

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

          }

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

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

答案 1 :(得分:1)

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

答案 2 :(得分:1)

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

答案 3 :(得分:0)

是的@richoffrails说文件实际上没有上传到服务器检查你的 $ _FILES数组获取更多信息。

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

http://www.uploadify.com/