5

リクエスト ヘッダーを設定する beforeSend メソッドを使用する代わりに、jQuery の $.ajax() 呼び出しのヘッダー設定オプションの使用を検討することにしました。当然、私はこのページhttp://api.jquery.com/jQuery.ajax/に行きましたが、ドキュメントが不足しており、そのページで複数のヘッダーを設定する方法とフォーマットを見つけることができません、またはその他の場所。

@tahir: では、なぜこれが機能しないのですか?

<!DOCTYPE html>
<html>
  <head>
    <title>Multiple DnD Uploader</title>
    <link rel="stylesheet" href="style.css" />
    <script type = "text/javascript" src = "../music/jquery.js"></script>
    <script type="text/javascript">
      $(document).ready(function(){
        $('#drop').change(function(event){
          files = event.target.files;
          $('#drop').css('display', 'none');
          for(var i = 0, len = files.length; i < len; i++) {
            alert(files[i].fileName);
            $.ajax({
              type: "POST",
              url: "uploader.php",
              contentType: "multipart/form-data",
              headers: {
                "X-File-Name" : ""+files[i].fileName,
                "X-File-Size" : ""+files[i].fileSize
              },
              data: 'hi',
              success: function(data){
                $('#info').append('Success: ' + data + '<br />');
              },error: function(data){
                $('#info').append('Error: ' + data + '<br />');
              }
            });
          }
        });
      });
    </script>
  </head>
  <body>
    <div id="drop">
      <h1>Drop files here</h1>
      <p>To add them as attachments</p>
      <input type="file" multiple="true" id="filesUpload" />
    </div>
    <div id="info">
    </div>
  </body>
</html>

2 つの X-File-Name 属性と X-File-Size 属性が要求ヘッダーに表示されません。

解決策: 私は本当にばかげているように感じます。私が指していた特定の jquery.js ファイルが 1.4.4 であることが判明したため、アップグレードしたところ、動作するようになりました! ありがとう。

4

1 に答える 1

4

それは言います:

リクエストとともに送信する追加のヘッダー キーと値のペアのマップ。この設定は beforeSend 関数が呼び出される前に設定されます。したがって、ヘッダー設定の値は beforeSend 関数内から上書きできます。

したがって、次のようなオブジェクトを渡すだけです。

{"header1":"value1","header2":"value2"}

等々。以下は、投稿リクエストに Accept ヘッダーを追加するコードです。

    $.ajax("relative/url/action.do",{
    success: function(){
        alert("success");
    },
    error: function(jqXHR, textStatus, errorThrown){
        alert(textStatus + ": " + jqXHR.responseText );
    },
    headers: {Accept: "application/json"},
    type : "POST"
});
于 2011-05-20T23:13:46.163 に答える