小编典典

用jQuery $ .ajax和php上传文件

ajax

我希望在用户使用$ .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']);

谢谢


阅读 251

收藏
2020-07-26

共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
    });
});
2020-07-26