2012-11-26 29 views
1

我正在從javascript函數AJAX POST請求的ajax POST響應:訪問在JavaScript

function UpdateMetrics() { 
    $.ajax({ 
       type: "POST", 
       url: "MyHandler.ashx?Param1=value1", 
       data: "{}", 
       contentType: "text/json; charset=utf-8", 
       dataType: "text", 
       success: function (msg) { 
        var jsonUpdatedData = msg; 
        ... 
       } 
      }); 
} 

從我處理,我送與JSON字符串:

context.Response.write(json); 

我想我我會在msg

我也想發送其他字符串(計數)。所以我試圖使用標題信息以及json數據。所以我說這行:

context.Response.Headers.Add("MaxCount",Convert.ToString(tempList.Count)); 

如果是這樣做是正確的方法,我怎麼能訪問它在我的success功能?

+0

我不會建議在響應頭返回數據。如果你必須返回一個計數參數,爲什麼不把它附加到你的JSON?或者,如果你的json正在返回一個數組數組,爲什麼不直接在javascript中獲取array.length? –

+1

你可以像newdata = {'data':json,'count':count}一樣發送它,發送newdata而不是json。不建議通過標題發送。 – specialscope

+0

其實'count'是一些不同的數字。它與json字符串無關。 – mike44

回答

2

要訪問success函數中的標題,請在函數中添加2個參數,狀態碼和jqXHR對象,您可以閱讀文檔api.jquery.com

所以,你的函數應該是這樣的:

success: function (msg, status, jqXHR) { 
    var jsonUpdatedData = msg; 
    ... 
} 

然而,正如在評論中指出,這可能是最好不要使用頭髮送數據。你應該把它包含在你發送的json中。

您還需要告訴jQuery的設置

dataType: "json" 

否則解釋響應,JSON,它只是被作爲文本退還給您。

+1

如果服務器的響應具有有效的內容類型,則不需要設置'dataType'。 jQuery將使用它來嘗試將響應的值轉換爲指定的類型。它並不總是隻是文本 – Ian

0

您可以使用getResponseHeader方法實現您在ajax發佈成功後獲取標題數據的要求,請參閱下面的代碼片段。

function UpdateMetrics() { 
var callback = $.ajax({ 
      type: "POST", 
      url: "MyHandler.ashx?Param1=value1", 
      data: "{}", 
      contentType: "text/json; charset=utf-8", 
      dataType: "text", 
      success: function (msg) { 

      var jsonUpdatedData = msg; 
     var headerdata = callback.getResponseHeader("MaxCount"); 
// Where MaxCount is name provided in the header. 
    ... 
      } 
     }); 
} 

感謝