2011-05-10 67 views
0

我想要做的事情基本上是運行腳本並將數據發佈到頁面,但頁面不在服務器上。所以我不想運行重定向,只需在用戶點擊按鈕時在後面運行網頁?如何運行運行後網址?

我已經試過......

set httpRequest = CreateObject("WinHttp.WinHttprequest.5.1") 
Dim var1 

var1 = Request("username") 

on error resume next 
httpRequest.Open "POST", "http://www.example.com", True 
httpRequest.setRequestHeader "Content-Type", "application/x-www-form-urlencoded" 
httpRequest.send var1 
set httpRequest = nothing 

但這似乎沒有工作。所以我想建立網址http://www.example.com?username並運行它?

+0

你需要從遠程服務器的所有迴應?這是一個將在服務器端運行的腳本,即不在客戶端瀏覽器中? – 2011-05-12 15:41:32

回答

0

最簡單的方法是將包括對jQuery腳本庫的引用和使用 阿賈克斯

http://api.jquery.com/jQuery.ajax/

通話很簡單:

 
<html> 
<head> 
<script language="javascript" type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js" ></script> 
</head> 
<body> 
bip 
<div id="result"> results to get replaced here</div> 
<div id="msg" style="color:Red">any errors will show here</div> 
<input type="button" value="click me" id="loadButton" /> 

<script language="javascript" type="text/javascript"> 

     //ensure jQuery is loaded before calling script 
    $(document).ready(function() { 
     alert('ready'); 
     $('#loadButton').click(function() { 
      alert('Handler for .click() called.'); 
      $.ajax({ 
       url: 'yoursite/yourpage', 
       error: function (xhr, ajaxOptions, thrownError) { 
        alert('doh an error occured. look at the error div above :)'); 
        $('#msg').html(xhr.status + ' ' + thrownError); ; 
       }, 
       data: "{'someparam':'someparamvalue','someparam2':'someparamvalue2'}", 
       success: function (data) { 
        $('#result').html(data); 
        alert('Load was performed.'); 

       } 
      }); 
     }); 
    }); 

</script> 

</body> 
</html> 
+0

嗯抱歉,我不知道ajax如何執行此操作? – Beginner 2011-05-11 07:55:22

+0

看到我的編輯上面的基本樣本 – 2011-05-11 14:35:38

+0

呃如何設置數據是我在我的例子中的var1? – Beginner 2011-05-12 08:39:58

0

你的問題很可能是這條線:

httpRequest.Open "POST", "http://www.example.com", True 

你的「真」意味着以異步模式運行,即在繼續之前不要等待響應。然後您立即銷燬該對象,這樣請求永遠不會變得很遠。將該「真」改爲「假」,你應該看到結果擊中了另一臺服務器。


編輯1:

也注意到你是不是正確格式的POST數據,應採取格式化foo=bar傳統的URL,因此發送行需要像這樣修改:

httpRequest.send "name=" & var1 

對不起,我第一次沒有發現!


編輯2:

這裏是一個工作GET交易與WinHttpRequest一個例子:

Function GetHTTP(strURL) 

    Set objWinHttp = Server.CreateObject("WinHttp.WinHttpRequest.5.1") 
    objWinHttp.Open "GET", strURL, False 
    objWinHttp.Send 

    GetHTTP = objWinHttp.ResponseText 

    Set objWinHttp = Nothing 

End Function 

如果你真的只需要一個GET事務,您可以使用此以下功能:

strResponse = GetHTTP("http://www.example.com/?name=" & Request("username")) 

並且因爲您不需要該響應,只需忽略strResponse從那裏對

參考:

NeilStuff.com - Open Method

+0

它仍然無法正常工作。我真的不需要從其他服務器的響應。我希望能夠做的就是用戶在表單上輸入一些細節,按提交併將其發送到示例url ...因此www.example.com?name=enteredDetail – Beginner 2011-05-13 08:03:42

+0

仍然因爲某種原因無法工作 – Beginner 2011-05-13 13:47:09