0

我必须从 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.
4

3 回答 3

1

检查这个: http: //www.json.org/js.html

要将 JSON 文本转换为对象,可以使用 eval() 函数。eval() 调用 JavaScript 编译器。由于 JSON 是 JavaScript 的真子集,因此编译器将正确解析文本并生成对象结构。文本必须用括号括起来,以避免在 JavaScript 语法中出现歧义。

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

myJSONtext 是您的 Web 服务的返回值

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

于 2012-05-23T08:24:57.937 回答
1

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

  1. Web 服务返回什么?标准 Web 服务返回 XML,而不是 JSON。因此,您要么必须直接解析 XML,要么将其转换为 JSON。
  2. 将 SQL 发送到 Web 服务是一个巨大的安全风险。想象有人发送DELETE FROM important_table
于 2012-05-23T08:28:39.843 回答
1

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

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

使用 RPC(远程进程调用)处理它,将结果打包成 json,成功回调会将其作为参数返回。缺点是从您的 Web 应用程序发送原始 SQL 查询非常危险,它很容易成为 SQL 注入攻击的目标。

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

于 2012-05-23T08:30:03.787 回答