Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/407.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Can';t访问使用ASP和AJAX发送的值_Javascript_Html_Asp.net_Ajax - Fatal编程技术网

Javascript Can';t访问使用ASP和AJAX发送的值

Javascript Can';t访问使用ASP和AJAX发送的值,javascript,html,asp.net,ajax,Javascript,Html,Asp.net,Ajax,我很难访问从HTML文件发送到ASP文件的值。我试图使用AJAXPOST方法将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 x

我很难访问从HTML文件发送到ASP文件的值。我试图使用AJAXPOST方法将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&lat=30.4545509&lng=-90.497907699998'

它不会以我尝试的任何方式将其解析为单个变量,只返回错误状态500,我也调试过,这意味着:

“条件表达式中的数据类型不匹配。”

当尝试发送sql语句时,因为值都未定义。
如果有人能就如何将值输入变量提供任何建议,我们将不胜感激。

您需要将http请求的
内容类型
头设置为
应用程序/x-www-form-urlencoded
。在调用
xmlhttp.send(…)
之前,请添加以下行:

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

你可以试试这个,希望它能帮上忙吗?我只需要在我的ASP页面的顶部添加“”吗?不仅如此,还要稍微修改一下你的JS代码,如示例中所示,并在代码的静态方法中添加[WebMethod]behind@CameronFedy-您的代码看起来确实像经典的ASP,而不是ASP.Net。您的文件具有ASP扩展名,而ASP.Net文件具有ASPX扩展名。您使用的是经典ASP还是ASP.Net?我不知道两者的区别,但我严格使用ASP,因为我有一个.ASP扩展在工作!非常感谢,这让我很头疼。