使用jQuery或ASPX页面处理Query String

时间:2011-02-16 12:44:04

标签: jquery asp.net c#-4.0 query-string

我有以下查询字符串(其中kvks是动态的):

http://api.openkvk.nl/json/SELECT bedrijfsnaam FROM kvk WHERE kvks = 27312152 LIMIT 1;

如果执行此查询字符串,它将返回json数据。 处理这个问题的最佳方法是什么?我以这种方式尝试过,但没有提醒

url.append("http://api.openkvk.nl/json/SELECT bedrijfsnaam FROM kvk WHERE kvks = ");
url.append(Dossierno);
url.append(" LIMIT 1");

$.get(url, function (data) {
            alert(data); });

或者我应该在单独的aspx页面中处理这个问题?

$.get('getaddress.aspx', { sDossierno : Dossierno} function (data) {
            alert(data); });

如果是,我如何发送查询字符串并在getaddress aspx页面上返回json对象?

2 个答案:

答案 0 :(得分:3)

这不是你的查询字符串。它是uri的一部分,ASP.NET不太可能允许它。您可以尝试以下方法:

$.get( 
    'http://api.openkvk.nl/json', 
    { q: 'SELECT bedrijfsnaam FROM kvk WHERE kvks = ' + Dossierno + ' LIMIT 1' }, 
    function (data) {
        alert(data); 
    }
);

其中相应的服务器端脚本将读取q查询字符串参数。

此外,我希望您了解服务器端脚本在安全性方面的影响,该脚本接受似乎是SQL查询并针对关系数据库执行它。最后但并非最不重要的是不要忘记same origin policy restriction,如果您打算向其发送AJAX请求,请确保此脚本托管在http://api.openkvk.nl上。

答案 1 :(得分:1)

  • 不要在查询字符串中传递整个SQL查询,因为它允许恶意代码到达您的数据库。
  • 字符串变量没有append方法,因此检查它是否真的按预期工作(提醒网址以查看它是否符合您的预期)
  • 您不允许来自其他域的请求(如果您的页面不在api.openkvk.nl ),则只允许JSONP跨域。检查same-origin-policy