2011-11-03 70 views
0

在我的HTML页面上,我有以下脚本。显示我退回的JSON

var request = $.ajax({ 
    url: 'http://localhost:1337/testservice.svc/rest/BillingPatterns', 
    dataType: 'json', 
    success: function(data){alert('test');},  
}); 

request.fail(function(jqXHR, textStatus) { 
    alert("Request failed: " + textStatus); 
}); 

这将返回“请求失败:错误”

使用fiddler2(检查HTTP流量),可以看我的请求,响应是:

HTTP/1.1 200 OK 
Content-Type: application/json; charset=utf-8 
Server: Microsoft-IIS/7.5 
X-Powered-By: ASP.NET 
Date: Thu, 03 Nov 2011 16:11:05 GMT 
Content-Length: 159 

{"Anniversary":false,"BillingPatternCode":6,"BillingPatternDesc":"Monthly Anniversary ","Frequency":1,"Monthly":true,"QuarterDayType":null,"QuarterDays":false} 

enter image description here

但它不会显示。无论我尝试过什么。是我已经尝试过警报(data.BillingPatternDesc)

编辑: 它似乎并没有执行“成功”功能。

+0

你有一个绝对的URL。你是否想要做一个交叉原点请求(这不起作用)? (删除'http:// localhost:1337',使URI以'/开始,以确保你是相对的)。 – Quentin

+0

有一个来自webservice的回应。不管怎样,我都会试试它。 :) – Doomsknight

+0

获得回应并能够在JS中阅读是两回事。 – Quentin

回答

2

您提供的代码看起来是正确的。我的猜测是这个问题可能出现在你的URL中。你的JSON请求是http://localhost:1337/Myservice.svc/rest/BillingPatterns;运行脚本的页面是否也在localhost:1337下运行?如果没有,您的浏览器将不允许您获取JSON,因为它被视为跨域请求。

如果您确实需要在不同的域/端口中获取JSON资源,则可以使用JSONP。

+0

html页面就在我的文档文件夹中,在同一台pc(本地主机)上。感谢您指出这一点。 – Doomsknight

+2

那就不行了,如果您正在从文件('file:// ...')运行HTML文档并尝试访问“http:// localhost:1337”,这被认为是跨域(甚至是跨“区域”)请求。您可能必须转换为JSONP。 – Jacob

+0

啊。干杯,我会试试看。 – Doomsknight

0

尝试使用alert(data.toSource());console.log(data);

http://www.w3schools.com/jsref/jsref_toSource_date.asp

+0

即使这不工作:(这实际上是类似的,我在Ruby中使用REST做了类似的工作,并且能够从被查看的结构向后工作以得到我想要的结果,但是为什么它不工作。 – Doomsknight

+3

如果你只是在'getJSON'回调函数中做一个简单的'alert('只是测试')会发生什么?可能函数甚至没有运行... –

+0

好吧,没有:/为什么函数没有运行的任何原因?我可以调用示例代码就好了,我知道调用部分正在工作。 – Doomsknight

2

尝试警报(data.d)代替警报(数据)。

编辑:不要以为它是相关的,但你在提醒后错过了一个分号。

edit2:如果它没有执行成功函数,请将您的getJSON更改为$ .ajax并提供错误回调以查看问题所在。

+0

错误回调是一个非常好的主意。 –

+0

现在使用ajax。With和没有分号,它不工作。Theres一个错误回调?我一直在使用firefox开发工具,没有js错误。ill试试看。:) – Doomsknight

+0

请看我更新的代码,它说er ror,(如im即将获得textstatus),但我如何看到实际的错误? – Doomsknight