Если у вас есть контроль серверного кода, а, проще всего, вероятно, будет включать параметр со значением для определения формата.
Вот пример, где я делал то же самое, что вы описываете. Я загрузил таблицу со значениями клиентов из данных, возвращаемых в XML, JSON или формат строки, все управляется значением мой код на стороне сервера возвращенного в качестве параметра формата:
function checkCusts(id, format, resultRegion) {
var address = "cust-lookup.jsp";
var data = "cust_id_list=" + getValue(id) + "&format=" + format;
if (address != "") {
ajaxPost(address, data,
function(request) {
parseCustomers(request, format, resultRegion);
});
}
}
function parseCustomers(request, format, resultRegion) {
if ((request.readyState == 4) && (request.status == 200)) {
var headings = new Array("Customer ID", "First Name", "Last Name", "Balance");
var rows = null, customers = null;
if ("xml" == format) {
var xmlDocument = request.responseXML;
customers = xmlDocument.getElementsByTagName("customer");
rows = new Array(customers.length);
var subElementNames = ["cust_id", "first_name", "last_name", "balance"];
for (var i=0; i<customers.length; i++) {
rows[i] = getElementValues(customers[i], subElementNames);
}
} else if ("json" == format) {
var rawData = request.responseText;
var data = eval("(" + rawData + ")");
rows = data.customers;
} else if ("string" == format) {
var rawData = request.responseText;
var rowStrings = rawData.split(/[\n\r]+/);
rows = new Array(rowStrings.length -1);
for (var i=1; i<rowStrings.length; i++) {
rows[i-1] = rowStrings[i].split("#");
}
}
var table = getTable(headings, rows);
htmlInsert(resultRegion, table);
}
}
Ну, жаль, что jQuery не разрешает это при приеме данных, но ваша идея вписывается в мою текущую проблему. Благодарю. – sinuhepop
Ммм, я пробовал, но это не работает ... Я всегда получаю typeof (response) == 'string' ... Я думаю, что подобное, но неуклюжие решение будет пытаться {eval (response);/* json * /} catch (e) {/ * html * /} – sinuhepop
@Sinuhe - третьим параметром для вашего успеха является XmlHttpRequest, попробуйте 'function (resp, status, xhr) {alert (xhr.getResponseHeader (" content -тип")); } 'что вы получаете за JSON vs html? –