我正在使用jQuery调用JSON web服务,除了我调用的URL需要隐藏在源代码中之外,它工作得很好。我正在尝试使用本地页面作为$ .getJSON的url参数,然后此页面将重定向到JSON服务。如果我在浏览器中调用该页面,它会正确地重定向并显示JSON数据,但$ .getJSON不会将其提取。
$.getJSON("Customer.html", function (result) {
Customer.html以下列方式重定向以调用JSON。
<script>
window.location = "http://MYJSONURL";
</script>
任何其他想法或建议将不胜感激。
答案 0 :(得分:0)
问题是$.getJSON
调用期望获得一些JSON(这只是一些文本)。您的 Customer.html 文件正在发回一小段JavaScript,当您在浏览器中运行时,会将浏览器重定向到您想要的任何位置。
当getJSON
尝试将 Customer.html 解释为JSON时,它会失败,因为它只是没有能力解决它刚收到一些HTML,更不用说解决了浏览器收到后如何表现。
您是否尝试过从Customer.html发送重定向标头?
但如果页面不是来自Web服务器的服务器,则无法执行此操作。 所以试试这个:
将Customer.html更改为:
{
"url": "http://MYJSONURL"
}
然后将您的代码更改为这个两阶段流程,该流程从Customer页面读取URL,然后从那里获取最终的JSON:
$.getJSON("Customer.html", function (urldata) {
var url = urldata.url;
$.getJSON(url, function (result) {
<your present code here>
}
当然,最好将Customer.html的名称更改为Customer.json。
答案 1 :(得分:0)
好的,您可以像这样直接调用Web服务
$(document).ready(function() {
$.ajax({
type: "POST",
url: "RSSReader.asmx/GetRSSReader",
data: "{}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(data) {
var items = [];
$.each(data, function(key, val) {
items.push('<li id="' + key + '">' + val + '</li>');
});
$('<ul/>', {
'class': 'my-new-list',
html: items.join('')
}).appendTo('body');
}
});
});