2016-12-02 13 views
1

POSTメソッドを使用して、Jqueryを使用して画像と一部の入力をサーバーにアップロードしようとしています。私はこのコードを試したが、それは私にエラーを投げている: POST 500(内部サーバーエラー)。 誰かがコードの何が間違っているのかを理解する手助けをすることができますか?助けてくれてありがとう。私はこの出力を持っていたfidderでjqueryを使用したファイルアップロード:POST 500(内部サーバーエラー)

<!DOCTYPE html> 
 
<html> 
 
<head> 
 
    <title>Image Upload Form</title> 
 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
    <script type="text/javascript"> 
 
     function submitForm() { 
 
      console.log("submit event"); 
 
      var fd = new FormData(document.getElementById("fileinfo")); 
 
      fd.append("label", "WEBUPLOAD"); 
 
      $.ajax({ 
 
       url: "http://URL?api_token=fb24085da58dad6decb9271fb170ef2ed8c80617", 
 
       type: "POST", 
 
       data: fd, 
 
       processData: false, // tell jQuery not to process the data 
 
       contentType: false // tell jQuery not to set contentType 
 
      }).done(function(data) { 
 
       console.log("PHP Output:"); 
 
       console.log(data); 
 
      }); 
 
      return false; 
 
     } 
 
    </script> 
 
</head> 
 

 
<body> 
 
    <form method="post" id="fileinfo" name="fileinfo" onsubmit="return submitForm();"> 
 
     <label>Select a file:</label><br> 
 
     <input type="file" name="file" required /> 
 
     <input type="text" name="text" required /> 
 
     <input type="submit" value="Upload" /> 
 
    </form> 
 
    <div id="output"></div> 
 
</body> 
 
</html>

:デバッグのときenter image description here

それはこの部分で、問題は、serveurで、クライアントからイメージを来ているようです停止しますそれがnullである必要はありませんので、なぜ彼はエラーを投げています。 : enter image description here

+0

本当に "HTTP?:// URL api_token = fb24085da58dad6decb9271fb170ef2ed8c80617" あなたのURLであるか、あなたが質問を投稿するときには、 'URL' と実際のURLを交換しましたか? –

+0

はい私はそれを置き換えました(私はそれを投稿する権利がありません) – Amina

+1

あなたのフォームはenctype = "multipart/form-data"でなければなりません。 [この質問](http://stackoverflow.com/questions/4526273/what-does-enctype-multipart-form-data-mean)を参照してください。 –

答えて

2

お客様のhtmlフォームにはenctype="multipart/form-data"プロパティが割り当てられている必要があります。

+0

返信いただきありがとうございます。フォームmethod = "post" id = "fileinfo" name = "fileinfo" onsubmit = "return submitForm();"しかし、このエラーが発生したことを確認した後で、サーバーがイメージを受信して​​いないことを意味するエラーが表示されます。あなたはどういう問題だと思いますか? SQLSTATE [23000]:整合性制約違反:1048列 'img'はnullにはなりません(SQL: 'menus'(' img'、 'user_id'、' restaurant_id'、 'updated_at'、' created_at') 、3、2016-12-02 13:59:50、2016-12-02 13:59:50)) – Amina

+0

パラメータを正しくマップしていますか?私はフォームの入力フィールドとサーバー側のパラメーターを意味します。リクエストを送信した後、入力フィールドは「ファイル」と「テキスト」として送信されます。サーバー側に対応するパラメータがありますか? – user1080381

+0

これはサーバからのSQLエラーです。Connection.php行のQueryException: SQLSTATE [23000]:整合性制約違反:1048 'img'カラムはNULLにできません(SQL: 'menus'に挿入します(' img'、 'user_id '、' restaurant_id'、 'updated_at'、' created_at')の値(、9、3、2016-12-02 14:37:18、2016-12-02 14:37:18))==>サーバーは画像を受け取っていません – Amina

2

この正しいコードは、サーバーのURLを変更するだけです。 user1080381のおかげで、彼は私にコメントで解決策を教えてくれました。

<!DOCTYPE html> 
 
<html> 
 
<head> 
 
    <title>Image Upload Form</title> 
 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
    <script type="text/javascript"> 
 
     function submitForm() { 
 
      console.log("submit event"); 
 
      var fd = new FormData(document.getElementById("fileinfo")); 
 
      console.log(fd); 
 
      //fd.append("label", "WEBUPLOAD"); 
 
      console.log(fd); 
 
      $.ajax({ 
 
       url: "http://TypeYourURL?api_token=fb24085da58dad6decb9271fb170ef2ed8c80617", 
 
       type: "POST", 
 
       data: fd, 
 

 
       processData: false, // tell jQuery not to process the data 
 
       contentType: false // tell jQuery not to set contentType 
 
      }).done(function(data) { 
 
       console.log("PHP Output:"); 
 
       console.log(data); 
 
      }); 
 
      return false; 
 
     } 
 
    </script> 
 
</head> 
 

 
<body> 
 
    <form method="post" id="fileinfo" name="fileinfo" onsubmit="return submitForm();" enctype="multipart/form-data"> 
 
    <label>Select a file:</label><br> 
 
    <input type="file" name="img" required /> 
 
     <input type="text" name="name" required /> 
 
     <input type="submit" value="Upload" /> 
 
     </form> 
 

 

 
     
 
    <div id="output"></div> 
 
</body> 
 
</html>

関連する問題