Как вернуть объект JSON в классический ASP
Я хочу вернуть объект JSON, используя классический ASP script (это часть запроса 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'] }")
%>
Автозаполнение не работает. Он работает, если я использую локальный массив поиска, например поиск: ['Январь', 'Февраль', 'Март', 'Апрель', 'Май']
Но что-то не так с ajax означает, что он не возвращает список должным образом.
Ответы
Ответ 1
Представляется, что на стороне клиента возникает ошибка синтаксического анализа.
Я не думал, что это изменит ситуацию, но похоже, что если вы процитируете все, включая имена свойств, это работает. И используйте двойные кавычки вместо одиночных кавычек - это, по-видимому, имеет значение.
Не забудьте удвоить свои двойные кавычки (по крайней мере, я думаю, что как вы это делаете в VBScript) было долгое время.
Итак:
<%
Response.ContentType = "application/json"
Response.Write("{ ""query"":""Li"", ""suggestions"":[""Liberia"",""Libyan Arab Jamahiriya"",""Liechtenstein"",""Lithuania""], ""data"":[""LR"",""LY"",""LI"",""LT""] }")
%>
Ответ 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
Ответ Джо должен сработать для вас. Однако вы можете посмотреть aspjson, если вы собираетесь выводить много JSON из классического ASP.