我正在处理让我发疯的问题。我想动态构建页面,但是当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>
答案 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