Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/258.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 无法通过jQuery中的其他参数传递formData_Javascript_Php_Jquery_Ajax - Fatal编程技术网

Javascript 无法通过jQuery中的其他参数传递formData

Javascript 无法通过jQuery中的其他参数传递formData,javascript,php,jquery,ajax,Javascript,Php,Jquery,Ajax,我试图将formData和其他参数一起传递给PHP脚本 使用$.post方法,我得到了一个“非法调用”错误。所以我放弃了$.post方法,转而使用$.ajax方法 详情如下: $('#uploadBtn').on('click', function() { var formData = new FormData($('#uploadfile')[0]); // the form data is uploaded file var booking = $('#bookingNum').va

我试图将formData和其他参数一起传递给PHP脚本

使用$.post方法,我得到了一个“非法调用”错误。所以我放弃了$.post方法,转而使用$.ajax方法

详情如下:

$('#uploadBtn').on('click', function()
{
  var formData = new FormData($('#uploadfile')[0]); // the form data is uploaded file
  var booking = $('#bookingNum').val();
  var partner = $('#partnerCode').val();

  var parameters =
  {
    formData:formData,
    booking:booking,
    partner:partner
  } 

  $.ajax({
    url: 'process/customer.php',
    data: parameters,  // <- this may be wrong
    async: false,
    contentType: false,
    processData: false,
    cache: false,
    type: 'POST',
    success: function(data)
    {
      console.log(data);
    },
    error: function(jqHHR, textStatus, errorThrown)
    {
      console.log('fail: ' + errorThrown);
    }
  });
});
$('uploadBtn')。在('click',function()上
{
var formData=new formData($('#uploadfile')[0]);//表单数据已上载到文件
var booking=$('#bookingNum').val();
var partner=$('#partnerCode').val();
var参数=
{
formData:formData,
预订:预订,
合伙人:合伙人
} 
$.ajax({
url:'process/customer.php',

数据:参数,//参数是您正在发布的对象。键值对将基于它的属性。请尝试像
$\u POST['formData']
$\u POST['booking']
那样访问它们

另外…请重新编写代码以删除
async:false
…TBH这本不应该放在jQuery中,这是绝对可怕的。别难过,这是每个新来者第一次尝试使用ajax时的第一件事,包括我自己。你将导致UI线程在整个过程中挂起,阻止所有用户交互在通话过程中出现了一些问题

编辑 我起初没有意识到你试图发布一个文件,所以这不是一个完整的答案,因为我认为你没有正确地访问它。但是这个答案的重要部分是没有
参数
索引
$\u post
(这就是为什么连你的回音“hello”都没有回来)

如果您发布一个类似

{
  key1 : "value1",
  key2 : "value2"
}
他们将通过php作为

$_POST['key1'];//"value1";
$_POST['key2'];//"value2";
重要的是要注意,发布到服务器的文件通常在$\u文件超全局中找到。(不知道AJAX是否会改变这一点,但我想不会)

EDIT2

将两者结合起来…这是一般的想法。让你的html+JS看起来像

$('#form')。在('submit',function()上
{
var form_data=new FormData();
form_data.append(“文件”,document.getElementById(“文件输入”).files[0]);
var booking=$('#bookingNum').val();
var partner=$('#partnerCode').val();
表格_数据。附加(“预订”,预订);
表格_数据。附加(“合作伙伴”,合作伙伴);
$.ajax({
url:'process/customer.php',
方法:“张贴”,
数据:表格数据,
contentType:false,
cache:false,
processData:false,
成功:功能(数据)
{
控制台日志(数据);
},
错误:函数(jqHHR、textStatus、ERRORSHORN)
{
log('fail:'+errorshown);
}
});
返回false;//防止默认表单提交
});

预订人数:
合作伙伴代码:
提交

错误只是告诉您不要使用
async:false
,因为它现在已被弃用。您的参数应该以这种方式发送。我不是PHP爱好者,但我可以想象它们会被保存在
$\u POST['formData']
$value['formData']
@TylerRoper-现在,我什么都没有得到。没有警告,没有错误…问题似乎现在在PHP方面。我缺少什么?@TylerRoper-我尝试回显“你好”在PHP方面,但我没有得到任何东西。想法?你是否在
if
内部或外部进行了回音?@TylerRoper-我编辑了上面的PHP以包含回音。很抱歉,我确实从实际代码中删除了异步。没有错误,但没有返回到控制台。我将尝试你的建议。@JohnBeasley我更新了我的答案。我认为你在工作中遇到了两个问题,这只是等式的一半。如果你将PHP端的更改与tanmay dey的建议结合起来,我认为你可能会得到答案。我只是无法将任何内容发布到PHP端(@JohnBeasley我做了另一次编辑,试图让你了解整个情况。它可能不适合你的具体环境,但希望它能让你更清楚地了解一般方法/事情应该如何运作。最坏的情况是,只要有一个
var\u dump($\u POST)
在服务器端,然后调试剩下的问题是在JS端还是php端。(var_转储会让您知道您在php端得到的是不是空数组,这就是为什么我更喜欢它回送。)好的,我现在把formData带回来。谢谢你,先生。虽然我没有得到预订或合作伙伴。这是一个开始。我非常感谢你的帮助,以及tanmayDey的帮助。我尝试了你的代码,但出现了以下错误:无法读取null的属性“文件”。不确定是谁否决了你。抱歉,没有错误。但是这里也没有结果。@JohnBeasley看着它,我认为这实际上应该行得通。请确保您更改了
document.getElementID('ID')
以获得实际文件输入元素的ID。您认为它在PHP端应该是什么样子?$booking=$\u POST(“booking”);$partner=$\u POST(“partner”);$file=$\u FILES[“file”][“姓名”];
$_POST['key1'];//"value1";
$_POST['key2'];//"value2";
$('#uploadBtn').on('click', function()
{
  var form_data = new FormData();

  form_data.append("file", document.getElementById('ID').files[0]);
  var booking = $('#bookingNum').val();
  var partner = $('#partnerCode').val();

  form_data.append("booking ",booking); 
  form_data.append("partner",partner);  

  $.ajax({
    url: 'process/customer.php',
    method:"POST",
    data: form_data,
    contentType: false,
    cache: false,
    processData: false,
    success: function(data)
    {
      console.log(data);
    },
    error: function(jqHHR, textStatus, errorThrown)
    {
      console.log('fail: ' + errorThrown);
    }
  });
});