一个月前,我做了一个示例项目,该项目有一个返回JSON响应的Web服务。这是服务器来源:
[ServiceContract]
public interface IWebService
{
[OperationContract]
[WebInvoke(ResponseFormat = WebMessageFormat.Json, UriTemplate = "getData?callback={callback}×tamp={timestamp}", Method = "GET")]
Stream getData(string callback, long timestamp);
}
public class WebService : IWebService
{
public Stream getData(string callback, long timestamp)
{
string response = APIManager.instance.getPrediction(timestamp);
StringBuilder sb = new StringBuilder();
sb.Append(callback + "(");
sb.Append(response); // indentation is just for ease of reading while testing
sb.Append(");");
return new MemoryStream(Encoding.UTF8.GetBytes(sb.ToString()));
}
}
所以我在Javascript中的客户端能够解析JSON:
function get_data_server(){
var theUrl = "**server_ip**/getData";
console.log("Consulta");
$.ajax({
url: theUrl,
dataType: 'jsonp',
success: function(data){
console.log("Success");
},
});
}
当我直接从浏览器访问它时,它会正确返回json。 javacript也运作良好。
当我尝试在另一个项目中重现相同的行为时,会出现我的问题。我做(好吧,我认为我这样做)但是当我从浏览器调用webservice时,它只是下载一个带有Json响应的文件。我究竟做错了什么?我想我在两个项目中也是这样做的......这看起来很简单,这让我很生气。
任何其他解决问题的方法也会受到赞赏。