2011-07-15 21 views
1

私はClassic ASP Webアプリケーションを使用しています。ここでの目標は、クライアントがレスポンスを待つことなく、時間のかかるデータ処理を行うことです。その結果、xmlhttpオブジェクトの非同期ポストが使用されました。ここに、目的のURLに投稿するコードを示します。私はこのページを直接URLを入力するとヒットすることができ、すべてのデータ処理が機能しますが、私は自分のvbscriptでこの送信要求を開始することができません。私はVBscriptを選択しました。なぜなら、検証をしていて、データがjavascriptで呼び出す前とxmlhttpの投稿前に望ましい形式になっていることを確認しているからです。私は今ここに詰まっており、あなたの助けを本当に感謝します。XMLHTTP classic asp投稿

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

あなたは非同期をやっている場合は、要求の状態変化を処理するために、デリゲートの機能が必要になります

+0

これは、動作していないと思われる原因は何ですか?私。あなたはどんなエラーを出していますか? –

+0

おそらく、objXMLHTTPを破棄して高速化すると、非同期呼び出しが完了しない可能性があります。 setTimeoutsメソッドを見てください。http://msdn.microsoft.com/en-us/library/ms760403(v=vs.85).aspx – Yots

+0

@James Wiseman - xmlhttpのポストページで、私はいくつかの情報を処理します。 dbに送信し、電子メールを送信します。ページ1を呼び出すと、ページ2への非同期ポストを行う上記のコードが含まれています。ページ2はページ1から呼び出されません。ページ2を呼び出すようにページ1をストライプしましたが、何も起こりません。しかし、ページ2のURLを入力すると、私のページはすべての処理を行い、電子メールを送信します。 – AFellowDevInNeed

答えて

6

を-aFellowDevInNeed。 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() 

これは、すべて言われている、クラシックASPでの非同期呼び出しを行うことは、100%ではありません。ユーザーが「Stop」、「Refresh」を押してリクエストを打ち切り、またはブラウザを閉じると、リクエストは中断されたとみなされます。

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

+1

sendステートメントの後に "Set objXML = Nothing"を移動します。 – Dee

+0

@Deliveryを送信後にすることはできません。なぜなら、応答が生成される前に接続を閉じるためです。 –