如何使用Javascript从Web服务获取Json对象?

时间:2012-05-23 08:19:13

标签: jquery web-services

我必须从Web服务获取一个Json对象,但我找不到任何关于它的文档。我必须 发一个sql语句得到它。任何人都知道这一切是否可行?

好的,谢谢你的回答。 首先,Web服务有一个GetJsonString“metod”。 我正在尝试这段代码:

$(document).ready(function () {
$.ajax({
    type: 'Get',
    url: 'http:********************************.asmx?op=GetJSONString',
    success: function(returnedJson) {
        alert(returnedJson)
    }
    });

});

我收到此错误:

XMLHttpRequest cannot load http:/***********asmx?op=GetJSONString. Origin null is not allowed by Access-Control-Allow-Origin.

3 个答案:

答案 0 :(得分:1)

请检查:http://www.json.org/js.html

  

要将JSON文本转换为对象,可以使用eval()函数。 eval()调用JavaScript编译器。由于JSON是JavaScript的适当子集,因此编译器将正确解析文本并生成对象结构。文本必须包含在parens中,以避免绊倒JavaScript语法中的歧义。

     

var myObject = eval('('+ myJSONtext +')');

myJSONtext是您的Web服务的返回值

如果您使用的是jQuery,这篇文章就是一个很好的答案:Calling a web service in JQuery and assign returned Json to JS variable

答案 1 :(得分:1)

这是可能的,但取决于几个因素:

  1. 网络服务返回什么?标准Web服务返回XML,而不是JSON。因此,您必须直接解析XML或将其转换为JSON。
  2. 将SQL发送到Web服务存在巨大的安全风险。想象一下有人发送了DELETE FROM important_table

答案 2 :(得分:1)

您可以将SQL作为POST请求的参数发送,如

$.ajax({
    type: 'POST',
    url: "http://www....",
    method: "serverCallback",
    data: "SELECT ....",
    success: success,
    dataType: dataType
 });

使用RPC(远程进程调用)处理它,将结果打包在json中 并且成功回调将作为参数返回。缺点是 从Web应用程序发送原始SQL查询非常危险, 它是SQL注入攻击的一个简单目标。

因此,如果您可以发送一个定义哪个SQL的参数会更好 查询将在数据库中执行,而不是发送查询本身。