2014-03-19 48 views
1

我在做什麼取決於點擊鏈接,重新構建URL並從URL中讀取變量,然後對傳統ASP頁面進行AJAX post調用,然後插入將該值發佈到SQL數據庫中。檢索經典ASP頁面上的AJAX Post Data頁面

這是在document.ready()函數中,這樣當URL被更改時,它將讀入新的值;

 //check if there's a video to log, and log that video 
    var params = {}; 
    params["loggedFrom"] = getUrlVars()["loggedFrom"]; 
    params["logVideo"] = getUrlVars()["logVideo"]; 
    params["ipAddress"] = getUrlVars()["IPAddress"]; 
    params["fromApp"] = "P360"; 
    params["fromPage"] = "P360 Trading Overview"; 
    params["videoName"] = getUrlVars()["videoName"]; 
    //alert(params["loggedFrom"]); 
    if(params["logVideo"] == "true"){ 
     var now = new Date(); 
     now = now.format("MM/dd/yyyy hh:mm:ss"); 

     $.ajax({ 
      type:"POST", 
      url:"p360TradingLog.asp", 
      data: params, 
      success : function(d){ 
       alert("this post was successful");    
      } 
     }); 
    } 

PARAMS []似乎是正確的包含數據做

alert(params["logVideo"]); 

它返回正確的值時一樣,但我沒有收到「這篇文章是成功的」警報。我的問題是我的代碼應該在p360TradingLog.asp頁面中以獲得這些發佈的值並將它們正確插入?這是我當前的代碼,但無法正常工作。

<% 
     Set con = Server.CreateObject("ADODB.Connection"); 
     set ipAddress = Request.Form("params")("ipAddress"); 
     set videoName = Request.Form("params")("videoName"); 
     set fromPage = Request.Form("params")("fromPage"); 
     set fromApp = Request.Form("params")("fromApp"); 
     set loggedFrom = Request.Form("params")("loggedFrom"); 
     set timeOfDay = Now; 
     var conStr = "Provider=SQLOLEDB.1;Password=xxxxxx;Persist Security Info=True;User ID=xxxxx;Initial Catalog=xxxxx;Data Source=xxxxx"; 
     con.Open(conStr); 
     Set rs = con.Execute("Insert into dbo.tbl_Prospect_Video_Tracking(IPAddress,videoName,fromPage,fromApp,loggedFrom,dtViewed)values('" + ipAddress + "','" + videoName + "','" + fromPage + "','" + fromApp + "','" + loggedFrom + "','" + timeOfDay + "')"); 
     //alert(insertSQL); 
     rs.close();   
     con.close(); 
%> 

有沒有辦法讓我在P360TradingLog.asp頁面上測試什麼可能會出錯?我不熟悉這些帖子,所以很抱歉,如果這些看起來非常拉曼。

回答

1
<% 
    dim con, ipaddress, videoname, frompage, fromapp, loggedfrom, timeofday, constr, sqlstr 

    Set con = Server.CreateObject("ADODB.Connection") 
    ipAddress = Request.Form("ipAddress") 
    videoName = Request.Form("videoName") 
    fromPage = Request.Form("fromPage") 
    fromApp = Request.Form("fromApp") 
    loggedFrom = Request.Form("loggedFrom") 
    timeOfDay = Now 

    conStr = "Provider=SQLOLEDB.1;Password=xxxxxxx;Persist Security Info=True;User ID=clink;Initial Catalog=xxxxx;Data Source=xxxxx" 
    con.Open conStr 
    sqlstr = "Insert into dbo.tbl_Prospect_Video_Tracking(IPAddress,videoName,fromPage,fromApp,loggedFrom,dtViewed)values('" & ipAddress & "','" & videoName & "','" & fromPage & "','" & fromApp & "','" & loggedFrom & "','" & timeOfDay & "')" 
    con.Execute(sqlstr) 


    con.close 
    %> 

首先你似乎是使用Javascript作爲服務器端腳本語言,它是完全有效的,但我是因爲我多了很多熟悉的語法改變爲VBScript這裏。

你正在使用「set」做聲明字符串變量,這看起來不對。當您使用request.form時,您只使用表單字段的名稱,並且不需要使用此上下文中的記錄集,而不是使用選擇查詢檢索數據。

+0

謝謝您的建議,我已經完成並對我的代碼進行了推薦的更改,但似乎仍未獲得成功消息。有什麼我可以放入上面的代碼來測試該頁面正確接收窗體變量? –

+1

您可以隨時使用Response.Write Request.Form(「ipAddress」)(或任何其他表單字段名稱)來獲取頁面以顯示其收到的數據 – John

+0

注意 - 我建議您在發佈之前更改數據庫用戶名和密碼連接字符串在公共論壇 – John

相關問題