2014-07-08 52 views
1

我想發佈文件和按鈕的值,並在PHP中處理它。jquery發佈文件和按鈕的值,並從腳本獲得響應

的問題是在我的PHP腳本ha2e.php條件if (isset($_FILES['file'])) {}總是過得false

HTML:

<div id="htmlar2en" style="text-align:center"> 
      <div class="container"> 
      <div style="text-align:center"> 
      <h1> Arabic to English HTML </h1> 
      <form method="post" enctype="multipart/form-data" target="iframe4" id = "htmla2e"> 
      *.XLSX <input type="file" name="file" />&nbsp;&nbsp;<input type="submit" id="submit4" name="submit4" value="HTML Arabic to English" /> 
      </form> 
      <iframe name="iframe4" id="iframe4" src="" style="display:none" ></iframe> 
     </div> 
     </div> 
    </div> 

的jQuery:

$(document).ready(function() { 

    var extra_data = "This is more stuff to send"; 
    var Bvalue = $(this).attr("value"); 

    $('#submit4').click(function() { 
    $.ajax({ 
    type: "POST", 
    url: "he2a.php", 
    data: {'form': $("#htmla2e").serialize(), 'other': extra_data, 'submit4': Bvalue}, 
    success: function(msg) { 
     alert("Form Submitted: " + msg); 
    } 
    }); 

    }); 

}); 

PHP:

<?php 

     if (isset($_FILES['file'])) { 
      header('Content-Type: text/html; charset=UTF-8'); 
      echo '<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />'; 
      require_once "simplexlsx.class.php"; 
      require '../../Arabic.php'; 
      $Arabic = new I18N_Arabic('Transliteration'); 
      $xlsx = new SimpleXLSX($_FILES['file']['tmp_name']); 
      echo "df"; 
      echo '<table border="1" cellpadding="3" style="border-collapse: collapse">'; 
      $eng = array(); 
      list($cols,) = $xlsx->dimension(); 
      foreach($xlsx->rows() as $k => $r) { 
     //  if ($k == 0) continue; // skip first row 
       echo '<tr>'; 
       for($i = 0; $i < $cols; $i++) 
       { 
        if ($_POST['submit3'] == 'HTML English to Arabic') 
        { 
         $temp = $Arabic->en2ar($r[$i]);     
       } 
        else if ($_POST['submit4'] == 'HTML Arabic to Englis') 
        { 
         $temp = $Arabic->ar2en($r[$i]);     
        } 
        else 
         continue; 
        echo '<td>'.((isset($r[$i])) ? $temp : '&nbsp;').'</td>'; 
       } 
       echo '</tr>'; 
      } 
      echo '</table>'; 
     } 
     ?> 
+0

請檢查此演示並下載並修改它。 http://www.sanwebe.com/downloads/18-ajax-file-upload –

+0

在這裏閱讀http://stackoverflow.com/questions/166221/how-can-i-upload-files-asynchronously-with-jquery = >如果您需要廣泛的瀏覽器支持,幾乎無法上傳Ajax文件。 –

回答

1

當你使用ajax請求時,當然你的$ _FILES是空的。

$('#submit4').click(function() { 
    $.ajax({ 
    type: "POST", 
    url: "he2a.php", 
    data: {'form': $("#htmla2e").serialize(), 'other': extra_data, 'submit4': Bvalue}, 
    success: function(msg) { 
     alert("Form Submitted: " + msg); 
    } 
}); 

你應該assgin表單動作你要發佈的數據,爲eample ha2e.php的URL,fllow是代碼。

<form method="post" enctype="multipart/form-data" target="iframe4" id = "htmla2e" action="ha2e.php"> 
    *.XLSX <input type="file" name="file" />&nbsp;&nbsp;<input type="submit" id="submit4" name="submit4" value="HTML Arabic to English" /> 
</form> 

最後我們使用Chrome開發者工具,我們將看到我們發佈的文件到行動ha2e.php,如果動作是空的,則默認當前URL頁面。 enter image description here

+0

在行動和'jquery'我們都需要給文件名? – user123

+0

@ user123在這裏閱讀http://stackoverflow.com/questions/166221/how-can-i-upload-files-asynchronously-with-jquery =>如果您需要廣泛的瀏覽器支持,幾乎不可能實現Ajax文件上傳。 –

1

您可能希望看到this postthis上的答案 - 使用AJAX上傳文件不適用於您正在使用的通用方法。

+1

在這裏閱讀http://stackoverflow.com/questions/166221/how-can-i-upload-files-asynchronously-with-jquery =>如果你需要廣泛的瀏覽器支持,你幾乎不能做Ajax文件上傳。 –

+0

@PratikJoshi:那麼對此有什麼解決方案? – user123

+0

@ user123,我已經在你的問題評論中告訴你,你需要使用插件「請檢查此演示並下載並修改它。sanwebe.com/downloads/18-ajax-file-upload」 –