Как вернуть объект JSON в классическом ASP - PullRequest
14 голосов
/ 08 августа 2011

Я хочу вернуть объект JSON с использованием классического сценария ASP (это часть запроса 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, означающим, что он не 'верните список правильно.

Ответы [ 3 ]

27 голосов
/ 08 августа 2011

Кажется, что это ошибка синтаксического анализа на стороне клиента.

Я не думал, что это будет иметь значение, но похоже, что если вы цитируете все, включая имена свойств, похоже, что это работает,И используйте двойные кавычки вместо одинарных кавычек - это, очевидно, имеет значение.

Не забудьте удвоить ваши двойные кавычки (по крайней мере, я думаю, что именно так вы делаете это в VBScript - это было давно).

Итак:

<%
    Response.ContentType = "application/json"
    Response.Write("{ ""query"":""Li"", ""suggestions"":[""Liberia"",""Libyan Arab Jamahiriya"",""Liechtenstein"",""Lithuania""], ""data"":[""LR"",""LY"",""LI"",""LT""] }")
%>
3 голосов
/ 10 декабря 2011

Я получил его для работы с кодом ниже .... После удвоения кавычек и ввода строки запроса

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 голосов
/ 08 августа 2011

ответ Джо должен работать на вас. Однако вы можете захотеть взглянуть на aspjson , если вы собираетесь выводить много JSON из классического ASP.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...