Получение типа содержимого ответа из jQuery.Post - PullRequest
3 голосов
/ 29 октября 2010

Есть ли способ при использовании jQuery.Post обнаружить тип содержимого ответа?

У меня есть форма в модальном окне, и идея заключается в том, что если форма недействительна, тогда HTMLФрагмент отправляется, и содержимое модального типа заменяется этим фрагментом, если он действителен, я хочу простую строку с содержимым для флэш-уведомления (типа, используемого здесь в SO).

В настоящее время япроверка, начинается ли возвращаемая строка с «success» и, если да, с использованием остальной части строки в качестве flash-уведомления.Это, очевидно, довольно хакерское решение, и мне оно действительно не нравится.

В идеале я хотел бы иметь возможность получить условный ответ на ответ, и если это "text / html", вставьте фрагментЕсли это «приложение / JSON», то я могу не только отправить сообщение для помощника, но и потенциально другие данные (сообщение, идентификатор, более конкретный тип сообщения об успехе / неудаче и т. д.), которые будут полезны для распространения на другие формы вбудущее.

1 Ответ

6 голосов
/ 29 октября 2010

jQuery уже обнаружит и преобразует ответ на основе заголовка типа контента (если при вызове $.ajax() не указано type). Например: , если он обнаружит "json" в заголовке типа контента, это будет объект . Вы можете просто сделать это:

$.post("myPage.html", { name: "value" }, function(data) {
  if(typeof(data) === "string") {
    //html
  } else {
    //JSON
  }
});

Или всегда передавать обратно JSON и иметь уведомление в качестве свойства, например:

$.post("myPage.html", { name: "value" }, function(data) {
  if(data.notification) {
    showMessage(data.notification);
  } else {
    //use the data object
  }
});
...