Javascript 通过Ajax将文件传递到PHP(无重定向)

Javascript 通过Ajax将文件传递到PHP(无重定向),javascript,php,jquery,ajax,file-upload,Javascript,Php,Jquery,Ajax,File Upload,我一直在尝试通过表单中的文件上传将图像从ajax传递到PHP 以下是我的ajax调用: var dataString = 'city='+ city_push + '&venue=' + venue_push + '&title=' + title_push + '&subtitle=' + subtitle_push + '&date=' + date_push + '&time=' + time_push + '&price=' + price

我一直在尝试通过表单中的文件上传将图像从ajax传递到PHP

以下是我的ajax调用:

var dataString = 'city='+ city_push + '&venue=' + venue_push + '&title=' + title_push + '&subtitle=' + subtitle_push + '&date=' + date_push + '&time=' + time_push + '&price=' + price_push + '&description=' + description_push + '&tag1=' + tag1_push + '&tag2=' + tag2_push + '&email=' + email_push + '&newvenue=' + newvenue + '&password=' + password_push;
    $.ajax({
      type: "POST",
      url: "assets/new.php",
      data: dataString,
      success: function() {
        alert("success");
      }
    });
    return false;
我想将该文件添加到我的dataString中,以便可以在PHP文件中使用$\u文件对其进行处理。有没有办法做到这一点并维持目前的结构?此ajax代码在成功提交表单时被调用


谢谢你的帮助

您应该研究如何使用对象,而不是字符串。JavaScript有一个
FormData
对象,您可以
向其追加
项。附加所有数据,然后您可以像这样附加图像文件

var formData = new FormData();
// add your variable values here using the append method
// Ex: formData.append('key', value);
var imageFile = document.getElementById('yourfileuploadidhere').files[0];
formData.append('image', imageFile);
您可能希望在客户端执行一些类型检查,以捕获无效格式,然后在后端对其进行验证。
一旦您的
formData
对象完成,只需在ajax调用中使用
data:formData,

那么从我收集的信息来看,没有办法做到这一点@sphanley解决方案似乎不起作用(可能只在FF中起作用)Javascript不允许直接访问运行它的机器的文件系统,因此不,不使用表单提交它,就没有唯一的Javascript方法可以做到这一点。那么您如何在PHP中获得它?会是$\u文件['image']吗?再次感谢!我在阿贾克斯是个彻头彻尾的呆子,从上周开始学习。是的。其他元数据将存在于
$\u POST
数组中<代码>$\u邮政['city']$_张贴[“地点]
etc,将每个键>值添加到
formData