使用jquery $ .ajax和php上传文件

时间:2012-04-21 16:30:12

标签: php jquery ajax html5

我希望在用户使用$ .ajax选择输入文件中的文件时异步上传文件。但是,接收调用返回索引的php未定义。 jquery代码是下一个:

$("#urlimatge").change(function(){
            var filename = $("#urlimatge").val();
            $.ajax({ 
                type: "POST",
                url: "utils/uploadtempimg.php",
                enctype: 'multipart/form-data',
                data: {'urlimatge' : filename },
                success: function(response){
                     alert(response);
                }
            }); 

        });

和重新接听电话的php:

$image =  new gestorimatges();
$target_path = $image->uploadTemp($_FILES['urlimatge']['name'],$_FILES['urlimatge']['tmp_name']);

由于

3 个答案:

答案 0 :(得分:3)

你无法将$ FILE从AJAX传递给PHP。

我建议使用plugin

它会让你的生活更轻松:) Here is a video tutorial to help too

答案 1 :(得分:2)

你可能想要使用像uploadify这样的工具。

答案 2 :(得分:1)

您无法使用AJAX上传文件,但您可以使用iframe,因此您无需刷新当前页面。

很多人都很喜欢插件,但你可以很容易地自己完成这项工作,并且具备AJAX请求的所有功能。

不要使用AJAX函数,而是将表单提交给附加了iframe事件处理程序的隐藏load,以便在提交表单时,您有一个实际包含的回调函数服务器响应(加载后iframe的HTML)。

示例:

HTML -

<form action="..." method="post" encrypt="application/x-www-form-urlencoded" target="workFrame" >
    <input type="file" name="file" />
    <input type="submit" />
</form>
<iframe id="workFrame" src="about:blank" style="display:none;"></iframe>

JS -

$(function () {
    $('form').on('submit', function () {
        //check if the form submission is valid, if so just let it submit
        //otherwise you could call `return false;` to stop the submission
    });

    $('#workFrame').on('load', function () {

        //get the response from the server
        var response = $(this).contents().find('body').html();

        //you can now access the server response in the `response` variable
        //this is the same as the success callback for a jQuery AJAX request
    });
});