我希望在用户使用$ .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']);
由于
答案 0 :(得分:3)
答案 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
});
});