2014-03-06 55 views
0

我有AJAX方法,該方法調用的方法變化的Ajax查詢數據類型來返回數據

$.ajax({ 
        url: "/DeviceUsage/Return", 
        type: "POST", 
        contentType: "application/json; charset=utf-8", 
        dataType: 'HTML', 
        data: JSON.stringify({ dev: { DeviceInstanceId: $('#DeviceInstanceId').val(), UserId: "1", StorageId: $('#StorageId').val() } }), 
        error: function (data) { 
         alert("wystąpił nieokreślony błąd " + data); 
        }, 
        success: function (data) { 
         if (data.ok) { 
          $("#Modal").modal('hide'); 
          window.location = data.newurl; 
         } 
         else { 
          $('.modal-body').html(data); 
         }     
        } 
       }) 

這種方法可以返回根據,如果方法成功地

return PartialView(dev) <=== Html 
return Json(new { ok = true, newurl = Url.Action("MyDevices") });;<=== JSON 

但在截至HTML數據或JSON數據Ajax數據類型我只能設置Html或JSON。如果我首先設置重定向不會工作。如果json然後PartialView不會工作。有沒有可能動態設置dataType?

+0

嗨 - 有沒有什麼辦法可以告訴它會來自請求前的前端?我認爲不可能的tbh。除非你改變使用其他的東西像xhttprequest或seomthing那裏可能有..但對於.ajax我認爲不.. –

+0

現在沒有辦法現在,請求之前。該方法檢查用戶數據輸入並決定其是否有效 – szpic

回答

2

嘗試不給dataType,因爲jQuery試圖爲您確定正確的格式;

的數據類型(默認:智能猜測(XML,JSON,腳本或HTML))

如果這不起作用使用HTML(純文本)只是檢查在響應數據中的一些關鍵字並根據這個使用數據。例如;

if (data.indexOf("html") > -1) { 
    $('.modal-body').html(data); 
} 
else { 
    var objData = JSON.parse(data); 
    window.location = objData.newurl; 
}