Opera, Wii, Ajax, Jquery и asp.net

Я написал веб-страницу с поддержкой ajax, предназначенную для использования на моем Wii. Однако ajax не работает в браузере Opera для Wii. Эта страница работает в IE, Chrome и FF, но не в Safari или Opera. Вот мой тестовый ajax-вызов jQuery:

$.ajax({
    type: "POST",
    url: "DefaultWebService.asmx/Hello",
    data: "{}",
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: function(msg) { alert(msg.d); },
    error: function() { alert("error in DefaultWebService.asmx/Hello"); }
});

Вот мой тестовый метод веб-сервиса:

[WebMethod]
public string Hello()
{
    return "hello there";
}

В журналах моего веб-сервера нет вызовов DefaultWebService.asmx, поэтому браузер даже не пытается выполнить запрос ajax.
Существуют ли какие-либо обходные пути, чтобы заставить это работать на Wii? Спасибо!


person Joel Harris    schedule 22.10.2009    source источник
comment
вы говорите так, будто это не работает в Opera/Safari для Windows... если так, то это не проблема Wii. Вы видите это сообщение об ошибке или вообще ничего не получаете?   -  person Kip    schedule 23.10.2009
comment
Не могли бы вы опубликовать вывод, который вы получите, если перейдете непосредственно к DefaultWebService.asmx/Hello?   -  person Kip    schedule 23.10.2009
comment
Сообщение об ошибке не появляется. В DefaultWebService.asmx/Hello сообщения не отправляются. Я не могу перейти к DefaultWebService.asmx/Hello на Wii. Это просто дает мне типичный желтый экран смерти asp.net, потому что веб-метод ожидает, что запрос будет отформатирован определенным образом, что невозможно сделать из браузера на Wii (насколько мне известно). Спасибо, что посмотрели.   -  person Joel Harris    schedule 23.10.2009


Ответы (3)


Вы пробовали изменить публикуемые данные? Это похоже (хотя, очевидно, не идентично) проблеме, опубликованной здесь: синтаксическая ошибка jQuery на POST в Opera

person offner    schedule 22.10.2009
comment
Я видел этот пост и сомневаюсь, что он применим здесь. Проблема в этом случае заключалась в том, что объект javascript создавался с ключом объекта без кавычек. Я пытаюсь передать пустой объект без ключей. - person Joel Harris; 23.10.2009

через месяц я надеюсь, что вы нашли решение, но если вы этого не сделали, я хотел бы помочь. Я написал довольно простой тест, вот что:

<?php
    if( $_SERVER['REQUEST_METHOD']=='POST' ){
        echo file_get_contents('php://input');
        exit;
    }
?>
    <script src="http://jqueryjs.googlecode.com/files/jquery-1.3.2.js"></script>
    <script type="text/javascript">
    $.ajax({
    type: "POST",
    url: location.href,
    data: '{"test":"passed" }',
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: function(msg) { alert(msg.test); },
    error: function() { alert("error while testing"); }
});
    </script>

но он отлично работает в версиях Opera, в которых я пробовал (включая некоторые ранние версии 9.x, которые могут быть выровнены с версией Wii - хотя я не уверен, что это ближайший эквивалент для настольных компьютеров)

person hallvors    schedule 06.12.2009

Не слишком хорошо знаком с ASP. Может быть, вам нужно JSON кодировать возвращаемое значение? Или "[WebMethod]" позаботится об этом? Попробуй это:

return "\"hello there\"";
person Kip    schedule 22.10.2009
comment
[WebMethod] заботится о кодировке JSON возвращаемого значения. - person Joel Harris; 23.10.2009