ajax jquery post успешно возвращает результат в Firefox, но простые переменные в других местах пусты - PullRequest
1 голос
/ 31 января 2011

Возникла проблема, которая серьезно вызвала некоторое раздражение и не смогла найти решение этой конкретной проблемы.Я использую сообщение ajax с json для своего веб-сервиса, а затем использую возвращаемое значение.Все работает, как и ожидалось в Firefox, но не в других местах (например, Chrome, Safari).

В других браузерах, однако, он всегда будет работать идеально, если я возвращаю более сложные значения (например, мои собственные объекты), но более стандартные переменные (строки, bool, int [] и т. Д.) Будут потеряны впуть и возвращенные данные ответа будут пустыми (хотя все успешно до этого момента).Таким образом, все работает, за исключением того, что возвращаемое значение в non-ff является нулевым, если пользовательские объекты.

Два интересных примечания:

  1. Полное удаление спецификации contentType делает его успешно возвращающим простые переменные, хотя вызовиначе не получится.Возможно, можно поиграть с этим и заставить его работать, хотя проблемы будут возникать при возврате пустых списков и тому подобное.И не совсем правильное решение.
  2. Использование fiddler не перехватывает запросы на публикацию в IE, только ff.в ff он выдает следующую ошибку (даже если результат позже в порядке): «Несоответствие длины содержимого: заголовок ответа потребовал 1767884 байта, но сервер отправил 1772317 байтов.»

довольно стандартный постметод (воспроизводитсяс другими аргументами, такими как кеш и т. д. безрезультатно):

/* Excutes a remote method */
function executeMethod(location, methodName, methodArguments, onSuccess, onFail) {
  $.ajax({
    type: 'POST',
    url: location + "/" + methodName,
    data: methodArguments,
    contentType: "application/json",
    dataType: "json",
    success: onSuccess,
    error: onFail
  });
} 

Метод веб-сервиса:

namespace Domain1.ClientServices
{
  [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
  [ServiceContract(Namespace = "")]

  public class AjaxService 
{
....
[OperationContract]
    public string PrintTransportNote(int meansOfTransport, int deliveryId)
    {
        return "string1";
    }
}
}

sidenote, я использую Telerik стороннего поставщика, если это может быть причиной какой-либобеспокойство.

1 Ответ

0 голосов
/ 13 сентября 2011

Я боролся с этой проблемой более 9 часов, пока не нашел:

http://blogs.planetsoftware.com.au/paul/archive/2010/06/25/radcompression-module-and-ria.aspx

Очевидно, вам нужно отключить модуль "RadCompression" при работе в веб-сервере разработки. Вам не нужно делать это для IIS, однако модуль сжатия работает правильно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...