Opera, Wii, Ajax, Jquery и asp.net
Я написал веб-страницу с поддержкой ajax, предназначенную для использования на моем Wii. Тем не менее, Ajax не работает в браузере Opera Wii. Эта страница работает в IE, Chrome и FF, но не в Safari или Opera. Вот мой тест jQuery ajax:
$.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? Спасибо!
3 ответа
Вы пытались изменить публикуемые данные? Это похоже (хотя, очевидно, не идентично) на проблему, опубликованную здесь: ошибка синтаксиса jQuery на POST в Opera
Надеюсь, что через месяц вы нашли решение, но если нет, я бы хотел помочь. Я написал довольно простой тест, просто так:
<?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 - хотя я не уверен, что самый близкий настольный эквивалент)
Не слишком знаком с ASP.. может быть, вам нужно JSON кодировать возвращаемое значение? Или делает[WebMethod]
"позаботиться об этом? Попробуйте это:
return "\"hello there\"";