XMLHTTP классический Asp Post - PullRequest
1 голос
/ 15 июля 2011

Я работаю с веб-приложением Classic ASP. Цель здесь состоит в том, чтобы выполнить обработку данных, требующую много времени, без необходимости ожидания ответа от клиента. Это привело к использованию асинхронной записи объекта xmlhttp. Вот фрагмент кода, который следует опубликовать на желаемом URL. Я могу попасть на эту страницу непосредственно при вводе URL, и вся обработка данных работает, однако я не могу запустить этот запрос на отправку в моем VBScript. Я выбрал VBscript, потому что я делаю проверки и проверяю, что данные находятся в нужном формате до публикации в xmlhttp, а не в javascript. Я нахожусь здесь на некоторое время и буду очень признателен за вашу помощь.

Dim objXMLHTTP
Set objXMLHTTP = Server.CreateObject("MSXML2.ServerXMLHTTP")
objXMLHTTP.Open "POST", "myurl", true
objXMLHTTP.Send
Set objXMLHTTP = nothing

-aFellowDevInNeed

1 Ответ

7 голосов
/ 15 июля 2011

Если вы выполняете асинхронную работу, вам понадобится функция делегата для обработки изменения состояния запроса. Когда readyState равен 4, запрос был отправлен на сервер, и был получен полный ответ. Мы также проверяем, чтобы запрос был HTTP 200 OK; в противном случае, возможно, произошла ошибка или мы получили частичный ответ от сервера:

Dim objXML
Function objXML_onreadystatechange()
    If (objXML.readyState = 4) Then
        If (objXML.status = 200) Then
            Response.Write(objXML.responseText)
            Set objXML = Nothing
        End If
    End If
End Function

Set objXML = Server.CreateObject("MSXML2.ServerXMLHTTP")
Call objXML.open("POST", "http://localhost/test.asp", True)
objXML.onreadystatechange = GetRef("objXML_onreadystatechange")
objXML.send()

Все это говорит о том, что асинхронный вызов в Classic ASP - это не 100%. Если пользователь прерывает запрос, нажимая «Остановить», «Обновить» или закрывает браузер, запрос будет считаться прерванным.

http://msdn.microsoft.com/en-us/library/ms535874(v=vs.85).aspx

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