无法访问使用ASP和AJAX发送的值

时间:2015-06-12 13:37:01

标签: javascript html asp.net ajax

我无法访问从HTML文件发送到ASP文件的值。我试图使用AJAX POST方法将3个值发送到数据库并插入它们,但无济于事。

以下是发送值的.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和Request.QueryString方法从发送中检索值,但不会返回任何内容。当我使用Firefox Firebug调试代码时,这就是发送内容:

'addy = 1232 Randall Avenue,Hammond,LA 70403,USA&amp; lat = 30.4545509&amp; lng = -90.49790769999998'

它不会以我尝试的方式将其解析为单个变量,并且只返回500的错误状态,我也将其调试为:

'标准表达式中的数据类型不匹配。'

尝试发送sql语句时,因为值都是未定义的。 如果有人可以就如何将值输入变量提供任何建议,那将非常感激。

1 个答案:

答案 0 :(得分:0)

您需要将http请求的Content-Type标头设置为application/x-www-form-urlencoded。在致电xmlhttp.send(...)之前,请添加以下行:

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