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>

两个 X-File-Name 和 X-File-Size 属性未显示在请求标头中。

解决方案:我觉得真的很愚蠢,原来我指向的特定 jquery.js 文件是 1.4.4,所以我升级了,现在它可以工作了!谢谢。

4

1 回答 1

4

它说:

与请求一起发送的附加标头键/值对的映射。此设置在调用 beforeSend 函数之前设置;因此,headers 设置中的任何值都可以在 beforeSend 函数中被覆盖。

所以你所要做的就是传递一个像这样的对象:

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

等等。这是一些在 post 请求中添加 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 回答