jQuery('#divElement')。html(str)在onsuccess中不起作用 - $ .ajax({type:“POST”,....,onsuccess,)

时间:2011-12-03 21:23:49

标签: javascript jquery-ui jquery jquery-mobile

我正在处理让我发疯的问题。我想动态构建页面,但是当POST成功时(从我的Web服务返回,使用$ .ajax({type:“POST”,....,onsuccess),onsuccess函数调用它应该构建一个页面。

如果我直接从onready上调用onsuccess,它会正常显示页面。但是当因为从Web服务返回而调用onsuccess函数时我无法看到该页面(onsuccess func肯定调用了,我也看到了他们的页面元素 - 使用Chrome“Inspect element”),任何人都可以解释我为什么我看不到页面!!!!?!

<!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 个答案:

答案 0 :(得分:4)

您的ajax调用指定fnSuccess。你的职能是onSuccess

此外,看起来ajax调用可能在全局范围内,但onSuccess()函数位于$(document).ready()回调内,这意味着它在全局范围内不可用。

答案 1 :(得分:0)

我解决了这个问题,它只是使用$(页面).appendTo($ .mobile.pageContainer)而不是JQuery(XXX).html,我注意到Red中的更改为了简单而在Green中的注释很少,希望这将是有用的和有用的,我找不到这个场景的完整解决方案,所以我为任何需要它的人添加它。

谢谢你们。

TAG:如何根据WEB Service / WCF的返回值

在运行时创建页面

这里有完整的解决方案: http://bit.ly/vjuPSw