2017-11-09 22 views
0

私はこのように私は決して応答する操作を得る要求を行うとき。 さて、私は応答 として取得***アレイ ( [名] =>マスタリングは ...ネイティブ(2).PDF [タイプ] =>アプリケーション/ PDF を反応させるのが、私は、ユーザーにファイルを表示する必要があります。情報

<form id='formid'> 
     <input id='fileid' type='file' name='file1' hidden/> 
     <input type='submit' value='IMPORT'/> 
    </form> 
    <script> 
     $(document).on("submit", "form", function (e) { 
      e.preventDefault(); 
      var fdat = new FormData(this); 
      fdat.append('operation', 'IMPORT'); 
      function importFile() { 
       return $.ajax({ 
        url: "data-source/oracle_controller_upload.php", 
        type: 'POST', 
        dataType: "JSON", 
        data: fdat, 
        processData: false, 
        contentType: false, 
        success: function(response){ 
            } 
       }); 
      } 
      debugger; 
      importFile().done(function (result) { 
      }).fail(function() { 
      }); 
     }); 
    </script> 

これは私のPHPコードです:

if (@$_REQUEST['operation'] === "IMPORT" && $_FILES) { 
    echo print_r($_FILES['file1']); 
    return; 
} 

カントは、成功コールバックまたは済()のいずれかに達する。助けてください?

if (@$_REQUEST['operation'] === "IMPORT" && $_FILES) { 
    echo json_encode($_FILES['file1']); 
    return; 
} 

で解決

+0

あなたはあなたが得る_do_何の行動言っていない、または任意のエラーなどが、私はまずあなたのページの投稿を推測するだろう。デフォルトのsubmitアクションがページ全体をポストするのを止めるには、関数内の最初の行に 'e.preventDefault();'を書く必要があります。 $ .ajaxはプロミスを返すので、 "submit"ハンドラからの返り値は意味をなさない。通常はブール値を返すだろう。 – ADyson

+0

あなたの "done"は別の関数を待っているようだが、あなたとは何も関係ないフォーム提出"importFile()"は何をしますか? – ADyson

+0

もちろん私はe.preventDefault()を持っています。 –

答えて

1

あなたは正確に言っていませんが、無効なJSON応答についてエラーが発生しているはずです。あなたのajaxリクエストはJSONがサーバーから返ってくることを期待していますが、変数の生の文字列ダンプを送るだけです。 PHPで

、この操作を行います。

if (@$_REQUEST['operation'] === "IMPORT" && $_FILES) { 
    echo json_encode($_FILES['file1']); //encode the object as JSON instead of just a variable dump 
    return; 
} 

とあなたの.done()メソッドで:

importFile().done(function (result) { 
    alert(result.name); //just for example, to display the name in an alert 
    //...etc 
+0

私はちょうどそれを見た。 –

1

レスポンスはJSONでなければなりませんもちろんので、私は、dataType: "JSON"を持っています。