我有一个通过调用以下函数显示 DIV 的超链接:
<div id="btn" onclick="showUI()">I'm a button</div>
<div id="panel" style="display: none">I'm hidden initially.</div>
<script>
function showUI(element) {
$('#panel').html('Loading...');
$('#panel').show();
var content = api_call();
$('#panel').html(content);
return false;
}
function api_call() {
$.ajax({
type: 'POST',
url: 'ajax/myAPI/',
async: false,
data: {q: 'fetch_sth_great', id: 1, token: '123456'},
success: function(data, status, xhr) {
return data;
}
}).fail(function(xhr, status) {
if (status == "error") {
return "Sorry but there was an error: " + xhr.status + " " + xhr.statusText;
}
});
}
</script>
在 Google Chrome 的开发控制台中,AJAX 调用以结构良好的 XML 响应,其中包含我想在 DIV 中显示的内容$('#panel')
和 status 200 OK
。但是,该函数api_call()
返回undefined
.
但是,当我将以下代码用于另一个 API 调用时,DIV 已成功填充数据。
$('#panel').load('ajax/myAPI/', {q: 'fetch_sth_great', id: id, token: '123456'}, function(response, status, xhr) {
if (status == "error") {
var msg = "Sorry but there was an error: ";
$("#panel").html(msg + xhr.status + " " + xhr.statusText);
}
});
我正在尝试通过 onclick 函数从我的 API 中获取内容(返回有效的 XML / HTML 内容),并将其显示在特定的 DIV 中。但在显示响应内容之前,我必须在其前后添加更多内容。因此,我不能使用$.load()
方法。
我在上面的代码中错过了什么?
将 jQuery 1.9.1 与 jQuery Migrate 1.1.0 一起使用
注意:整个过程中没有 JavaScript 或服务器端错误。
更新: XML 返回的示例 XML 内容
<?xml version="1.0" encoding="utf-8" ?>
<response>
<ui><![CDATA[some html here]]></ui>
</response>
我想获取xpath的内容:/response/ui