programing

클래식 ASP에서 JSON 개체를 반환하는 방법

muds 2023. 9. 3. 16:39
반응형

클래식 ASP에서 JSON 개체를 반환하는 방법

클래식 ASP 스크립트(AJAX 요청의 일부)를 사용하여 JSON 개체를 반환하고 싶습니다.

다음과 같은 텍스트로 응답을 보내면 됩니다.

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

이것이 작동할까요, 아니면 실제로 JSON 라이브러리가 필요할까요?

편집: http://www.devbridge.com/projects/autocomplete/jquery/ #how to work에서 자동 완성 플러그인을 얻으려고 합니다.

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과 같은 로컬 룩업 배열을 사용하면 작동합니다: ['1월', '2월', '3월', '4월', '5월']

하지만 아약스가 잘못되었다는 것은 목록을 제대로 반환하지 않는다는 것을 의미합니다.

클라이언트 측에서 구문 분석 오류가 발생한 것 같습니다.

이게 별 차이가 없을 줄 알았는데 부동산 이름까지 다 인용하면 효과가 있을 것 같습니다.그리고 단일 따옴표 대신 이중 따옴표를 사용하십시오. 분명히 차이가 있습니다.

두 배의 인용문을 두 배로 늘린다는 것을 기억하세요(적어도 VBScript에서는 그렇게 하는 것 같아요 - 오래됐어요).

그래서:

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

아래 코드로 작동하도록 했습니다.따옴표를 두 배로 늘리고 쿼리 문자열을 입력한 후

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 

Joe의 대답은 당신에게 효과가 있을 것입니다.그러나 클래식 ASP에서 많은 JSON을 출력할 경우에는 aspjson을 참조할 수 있습니다.

언급URL : https://stackoverflow.com/questions/6977261/how-to-return-a-json-object-in-classic-asp

반응형