根据返回数据更改Ajax查询dataType

时间:2014-03-06 11:50:33

标签: javascript jquery 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);
                        }                  
                    }
                })

根据if方法是否成功结束,该方法可以返回HTML数据或JSON数据

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

但在Ajax数据类型中,我只能设置Html或JSON。如果我先设置重定向不会工作。如果json然后PartialView不会工作。有没有可能动态设置dataType?

1 个答案:

答案 0 :(得分:2)

尝试不提供dataType,因为jQuery会尝试为您确定正确的格式;

  

dataType(默认值:智能猜测(xml,json,script或html))

如果这不起作用,请使用html(纯文本)只检查响应数据中的某些关键字并根据此使用数据。例如;

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