【问题标题】:Sending image along other data in ajax to php将图像与ajax中的其他数据一起发送到php
【发布时间】:2017-02-06 22:23:38
【问题描述】:

我需要一点帮助。我创建了 ajax 表单并将数据传递给 api.php。我向 php.ini 发送正常值没有问题。我目前在通过发送文件时遇到问题。

HTML

<form id="adding" enctype="multipart/form-data">

 <input type="file" id="imgInp">

 <input type="text" id="name">

 <button type="submit" class="btn btn-default pull-right">Submit</button>
</form>

Javascript

$('#adding').submit(function(e) {
    e.preventDefault();
    $.ajax({
       type: "POST",
       url: 'api.php?do=add',
       data: {
            img: $("#imgInp").val(),
            name: $("#name").val()
        },
       success: function(data)
       {
          if (data === 'KO'){
            document.getElementById("error").innerHTML = "Alert";           
          }
           if (data === 'OK'){
            document.getElementById("error").innerHTML = "OK";          
          }
       }
   });

可以发送来自变量名的数据,但不能来自 img。请帮忙。谢谢

【问题讨论】:

    标签: php ajax


    【解决方案1】:

    听起来你需要使用表单数据对象。在 data 属性中,通过您的 ajax 调用,

    仅供参考:您需要有 jquery 库才能使其正常工作

    这将抓取所有表单内容,然后您可以接收表单内容,包括您的 php 控制器上的图像

        $('#adding').submit(function(e) {
     var formData = new FormData($(this));
            e.preventDefault();
            $.ajax({
               type: "POST",
               url: 'api.php?do=add',
               data: formData ,
              contentType: false,
              processData: false,
                cache: false,
               success: function(data)
               {
                  if (data === 'KO'){
                    document.getElementById("error").innerHTML = "Alert";           
                  }
                   if (data === 'OK'){
                    document.getElementById("error").innerHTML = "OK";          
                  }
               }
           });
    

    在你的 php 方面,

    <?php
    try{
    if(isset($_FILES) && $_FILES['tmp_name'] != null){
    //awesome, we have something here
    //then check for extensions, validate and move upload 
    }else{
      //no file
    }
    
    }catch(Exception $ex){
      echo($ex->getMessage());
    }
    ?>
    

    【讨论】:

    • 谢谢伙计,在 php 网站上,还有几个问题要问。变量将是什么? $_POST[?array?]
    • 使用 $_FILES[] 数组。这会抓住它。阅读更多 w3schools.com/php/php_file_upload.asp 当您进行此 ajax 调用时,它会获取所有表单内容。然后通过使用 $_FILES,您可以获得正在发送的文件(图像、pdf 等)。我会更新我的答案
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-22
    • 2019-02-20
    • 1970-01-01
    • 1970-01-01
    • 2019-03-15
    相关资源
    最近更新 更多