Javascript Can';t访问使用ASP和AJAX发送的值
我很难访问从HTML文件发送到ASP文件的值。我试图使用AJAXPOST方法将3个值发送到数据库并插入它们,但没有效果 以下是用于发送值的.html代码: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
// 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扩展在工作!非常感谢,这让我很头疼。