web-dev-qa-db-ja.com

JSONオブジェクトをクラシックで返す方法ASP

従来のASPスクリプトを使用してJSONオブジェクトを返したい(AJAXリクエストの一部))。

応答を次のようなテキストとして送信する場合:

response.write("{ query:'Li', suggestions:['Liberia','Libyan Arab Jamahiriya','Liechtenstein','Lithuania'], data:['LR','LY','LI','LT'] }")

これは機能しますか、それとも実際にJSONライブラリが必要ですか?

編集:http://www.devbridge.com/projects/autocomplete/jquery/でオートコンプリートプラグインを取得しようとしています#howto 動作します。

javascript:

 $(document).ready(function() {
    var a = $('#txtValue').autocomplete({ 
    serviceUrl:'script.asp',
    minChars:2, 
    maxHeight:400,
    width:300,
    zIndex: 9999,
    deferRequestBy: 0, //miliseconds
    onSelect: function(value, data){ alert('You selected: ' + value + ', ' + data); },
});

ASP:

<% 
response.ContentType = "application/json"
response.write("{ query:'Li', suggestions:['Liberia','Libyan Arab Jamahiriya','Liechtenstein','Lithuania'], data:['LR','LY','LI','LT'] }") 
%>

オートコンプリートが機能していません。 lookup:['January'、 'February'、 'March'、 'April'、 'May']のようなローカルルックアップ配列を使用すると機能します

しかし、ajaxに問題があり、リストが適切に返されません。

14
Flash

クライアント側の解析エラーのようです。

これで違いが出るとは思いませんでしたが、プロパティ名を含めてすべてを引用するとうまくいくようです。そして、一重引用符の代わりに二重引用符を使用します-それは明らかに違いをもたらしています。

二重引用符を2倍にすることを忘れないでください(少なくとも、これはVBScriptで行う方法だと思います-長い間です)。

そう:

<%
    Response.ContentType = "application/json"
    Response.Write("{ ""query"":""Li"", ""suggestions"":[""Liberia"",""Libyan Arab Jamahiriya"",""Liechtenstein"",""Lithuania""], ""data"":[""LR"",""LY"",""LI"",""LT""] }")
%>
28
Joe Enos

ジョーの答え がうまくいくはずです。ただし、クラシックASPから大量のJSONを出力する場合は、 aspjson を確認することをお勧めします。

3
Jon P

以下のコードで動作するようになりました...引用符を2倍にしてクエリ文字列を入力した後

currQuery= request.querystring("query")
response.expires=-1
Dim rsMain,sqlMain,rettxt,JobOpenToArr
set rsMain= Server.CreateObject("ADODB.Recordset")
rsMain.CursorLocation = adUseClient
sqlMain = "select JobOpenTo FROM Jobs WHERE JobOpenTo LIKE '%"&currQuery & "%' group by JobOpenTo order by JobOpenTo" 
rsMain.Open sqlMain, Session("XXX_CMS")
if Not rsMain.Eof  Then   
              '## build the string
       rettxt = "{query:""" & currQuery & """, suggestions:["

     JobOpenToArr = rsMain.getRows()     
     For i = 0 to UBound(JobOpenToArr,2)

       rettxt = rettxt & """" & JobOpenToArr(0,i) & ""","

     Next    
     '##knock off trailing comma
     rettxt = left(rettxt,len(rettxt)-1)
     rettxt = rettxt & "]}"
     Response.Write rettxt 
3
Richard