2015-06-12 66 views
0

我無法訪問從HTML文件發送到ASP文件的值。我正在嘗試使用AJAX POST方法將3個值發送到數據庫並插入它們,但無濟於事。無法訪問使用ASP和AJAX發送的值

這裏是html的代碼發送值:

// Builds AJAX request and sends it to ASP page 
function sendInfo(x,y,z){ 
    if (window.XMLHttpRequest){ 
     // code for IE7+, Firefox, Chrome, Opera, Safari 
     xmlhttp=new XMLHttpRequest(); 
    } 
    else{ 
     // code for IE6, IE5 
     xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
    } 
    xmlhttp.onreadystatechange=stateChanged; 
    xmlhttp.open("POST","UpdateAJAX.asp",true); 
    xmlhttp.send("addy="+(x)+ 
        "&lat="+(y)+ 
        "&lng="+(z)); 
} 

// Checks the ready state of the sent response 
function stateChanged() { 
    if (xmlhttp.readyState==4 && xmlhttp.status==200) { 
     document.getElementById("txtHint").innerHTML=xmlhttp.responseText; 
    } 
    else { 
     document.getElementById("txtHint").innerHTML="Error with ready state: " + xmlhttp.readyState + " and status: " + xmlhttp.status; 
    } 
} 

這裏是 'UpdateAJAX.asp' 代碼:

<% 
    conn = Server.CreateObject("ADODB.Connection"); 
    conn.Open("DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" + Server.MapPath("Project.mdb")); 

    ' var addy = Request.QueryString("addy");' 
    ' var lat = Request.QueryString("lat");' 
    ' var lng = Request.QueryString("lng");' 

    var addy = Request.Form("addy"); 
    var lat = Request.Form("lat"); 
    var lng = Request.Form("lng"); 

    var sql="INSERT INTO Location_Info (Address,Latitude,Longitude)" 
    sql= sql + " VALUES " 
    sql= sql + "('" + addy + "'," 
    sql= sql + "'" + lat + "'," 
    sql= sql + "'" + lng + "')" 
    Response.Write(sql); 

    rs = conn.Execute(sql); 

    Response.Write("Your record has been placed into the database."); 

    conn.Close(); 
%> 

我已經試用過的Request.Form和請求.QueryString方法從發送中檢索值,但沒有返回。當我使用Firefox的Firebug來調試代碼,這是正在發送的:

'阿迪= 1232蘭德爾大道,哈蒙德,LA 70403,USA & LAT = 30.4545509 & LNG = -90.49790769999998'

一點也沒有不管我嘗試將它解析爲單個變量,只返回500的錯誤狀態,我也將其調試爲:

'條件表達式中的數據類型不匹配。'

當試圖發送sql語句時,因爲值都是未定義的。 如果有人可以提供有關如何將值存入變量的任何建議,將不勝感激。

+0

你可以試試這個http://stackoverflow.com/a/30083658/4773983,希望它可以幫助 –

+0

我是否只需要添加「的 '到我的ASP頁面的頂部? –

+0

不僅如此,還改變了一點你的JS代碼,就像在這個例子中一樣,在你的代碼的靜態方法中添加[WebMethod]在 –

回答

0

您需要將您的http請求的Content-Type標頭設置爲application/x-www-form-urlencoded。你叫xmlhttp.send(...)之前,加入這一行:

xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 
+0

工作正常!非常感謝你,這讓我非常頭疼。 –