jQuery ('# divElement'). html (str) не работает внутри onsuccess - $ .ajax ({тип: "POST", ...., onsuccess,) - PullRequest
0 голосов
/ 04 декабря 2011

Я имею дело с проблемой, которая сводит меня с ума.Я хочу построить страницы динамически, но при успешном выполнении POST (возврат из моего веб-сервиса с использованием $ .ajax ({type: "POST", ...., onsuccess,) вызывается функция onsuccess, которая должна создать страницу.

Если я вызываю onsuccess из onready напрямую, он нормально работает, появляется страница, но когда вызывается функция onsuccess из-за возврата из веб-службы, я не вижу страницу (функция onsuccess вызывалась навернякаЯ также вижу, что элемент страницы их - используя Chrome «Осмотреть элемент»), любой может объяснить мне, почему я не вижу страницу !!!!?!

<!DOCTYPE html> 
<html> 
<head> 
<title>My Page</title> 
<meta name="viewport" content="width=device-width, initial-scale=1"> 
<link rel="stylesheet" href="http://code.jquery.com/mobile/1.0b2/jquery.mobile-1.0b2.min.css" />
<script src="http://code.jquery.com/jquery-1.6.2.min.js"></script>
<script src="http://code.jquery.com/mobile/1.0b2/jquery.mobile-1.0b2.min.js"></script>
</head> 
<body> 
 <script type="text/javascript">

 function DebugClient(data, fnSuccess, fnError) {
           $.ajax({
               type: "POST",
               url: "Service/WcaService.asmx/Client_GetInfo",
               data: '{"id": ' + data + '}',
           contentType: "application/json; charset=utf-8",
           dataType: "json",
           success: fnSuccess,
           error: fnError,
           dataFilter: function (data) {
               //remove the ‘d’ property inserted by all WCF services (if it exists)
               return data.replace(/^\{"d":(.*)\}$/, "$1");
           }
       });
   }
 $(document).ready(function () {

    //If I call the onSuccess directly from here it works.


   DebugClient(currentID, onSuccess, DefaultErrorHandler);
   return false;
 }

function onSuccess(res) {              
   var html = '';

     html += '<div data-role="page">';

     html += '<div data-role="header">';
     html += '<h1>My Title</h1>';
     html += '</div>';

     html += '<div data-role="content">';
     html += '<p>Hello world</p> ';
     html += '</div>';

     html += '</div>';
     jQuery('#divData').html(html);
     return false;
 });
</script>

<div id="divData"> 
</div>

</body>
</html>

Ответы [ 2 ]

4 голосов
/ 04 декабря 2011

Ваш вызов ajax указывает fnSuccess. Ваша функция onSuccess.

Кроме того, похоже, что вызов ajax может находиться в глобальной области видимости, но функция onSuccess() находится внутри обратного вызова $(document).ready(), что означает, что он недоступен в глобальной области видимости.

0 голосов
/ 08 декабря 2011

Я решил проблему, просто используя $ (page) .appendTo ($. Mobile.pageContainer) вместо JQuery (XXX) .html, я отмечаю изменения в красном для простоты и немного комментариев в зеленом, надеюсьэто будет полезно и полезно, я не могу найти полное решение для этого сценария, поэтому я добавляю его для тех, кто в этом нуждается.

Спасибо, ребята.

TAG: как создать страницу ввремя выполнения в соответствии с возвращаемым значением из WEB Service / WCF

Здесь полное решение: http://bit.ly/vjuPSw

...