使用Javascript服务器端编码从Classic ASP返回JSONP

时间:2012-03-09 17:32:33

标签: javascript jquery json asp-classic jsonp

我从jquery调用一个经典的.asp页面来返回一个列表(使用JSONP)。我想使用JSONP,因为相同的原始政策会导致我的网站通过谷歌翻译查看时出现问题。我发现的所有解决方案的问题是他们假设asp页面使用VBscript作为服务器端语言。我使用javascript作为服务器端语言,在asp中连接到数据库并返回结果。

我尝试过一些只返回500个服务器错误的方法。这是我的jquery电话:

$.ajax({
  dataType: 'jsonp',
  url: 'website/page.asp',
 success: function () {
    alert(data);
  },
});

这是我的page.asp:

<%@ language="Javascript" %>

<script language="javascript" runat="server" src='json2.js'></script>
<script language="javascript" runat="server">

var jsonValue = eval('('hello world')');
Response.Write(jsonValue);

</script>

我想要做的就是创建一个简单的hello world JSONP调用,以便我可以开始修改它以包含我正在对数据库执行的查询中的数据。有没有人有这个简单的版本?这可能吗?

1 个答案:

答案 0 :(得分:2)

你的例子毫无意义。首先,它具有无效的语法(“hello world”是一个字符串,但它没有引用)。其次,你想在你的asp代码中编码JSON,但使用eval将是一种(错误的)解码JSON的方法。以下是我认为你可以做的事情,使用Crockford的json2.js来编码你的对象,如下所示:

var sourceObj = { "testkey" : "test value", "otherkey" : 5 };
var jsonstr = JSON.stringify(sourceObj);
Response.Write("yourjsonpCallbackName (" + jsonstr + ");");