2016-12-24 67 views
1

這是使用SQL Server 2012數據庫的IIS 7.5經典ASP網站。在SQL語句中使用通過AJAX的2個值

我需要幫助。我通過一個函數傳遞2個值到另一個經典的ASP頁面,這反過來將在SQL語句中使用這些值返回一個值

當我使用它時,它不會返回值,但是當我手動輸入一個值時,如UnitPieces的'7'和City的'Los Angeles',它從SQL Server數據庫返回適當的數據。

以下是我與

<form> 
<select id="shiptoarea" name="shipcost" class="required" onchange="shipping(this.value)"> 
<option disabled="disabled" selected="selected" value="">--Choose One--</option> 
<option value="San Francisco">San Francisco</option> 
<option value="Los Angeles">Los Angeles</option> 
<option value="New York">New York</option> 
<option value="San Diego">San Digeo</option> 
</select> 
</form> 
<p id="shippingcost"></p> 

,它的值發送到這個AJAX功能工作(注:<%= vcItems%>在購物車中的商品數量)

function shipping(str) { 
    var xmlhttp = new XMLHttpRequest(); 
    xmlhttp.onreadystatechange = function() { 
      document.getElementById("shippingcost").innerHTML = this.responseText; 
    }; 
    xmlhttp.open("GET", "shiptoamount.asp?y=<%=vcItems%>&q=" + str, true); 
    xmlhttp.send(); 
} 
</script> 

這是運行SQL查詢的頁面

Dim Connection 
Dim ConnString 
Dim Recordset 
Dim SQL 
Dim qq 
Dim yy 

qq = (request.querystring("q")) 
yy = (request.querystring("y")) 

ConnString = "DRIVER={SQL Server};SERVER=SQLServerName;UID=username;" & _ 
"PWD=password;DATABASE=databasename" 

SQL = "SELECT FlatShipCost FROM ShipRates WHERE UnitPieces = "&yy&" AND City = "&qq 

Set Connection = Server.CreateObject("ADODB.Connection") 
Set Recordset = Server.CreateObject("ADODB.Recordset") 

Connection.Open ConnString 

Recordset.Open SQL,Connection 

If Recordset.EOF Then 
    Response.Write("No records returned.") 
Else 
    if NOT Recordset.Eof then 
     Response.write (request.querystring("q")) 
     Response.write (Recordset("FlatShipCost")) 
    end if 
End if 

Recordset.Close 
Set Recordset = nothing 
Connection.Close 
Set Connection = nothing 

奇怪的是,如果我手動

Response.write (request.querystring("q")) 

Response.write (request.querystring("y")) 

它會顯示在下拉選擇爲City的HTML,也從<%,在車的正確數量的項目= vcItems%>。所以這些值會進入運行查詢的頁面,但我想我可能會在SQL語句中做錯了什麼。請幫忙。在此先感謝

+0

(https://xkcd.com/327/) –

回答

0

也許你只是錯過了引號的字符串QQ傳遞到城市的條件:[注意小鮑比表]

SQL = "SELECT FlatShipCost FROM ShipRates WHERE UnitPieces = "&yy&" AND City = '"&qq&"';" 
+0

謝謝你的迴應,Falco。我嘗試了你的建議,並沒有骰子:( – Windows95

+0

檢查!我有一個錯字!這是它的先生!非常感謝你,法爾科! – Windows95