如何获得返回值.asp到ajax

为什么我不能从.asp获得返回值?

这是我的js:

$('#loginID').click(function(){ var userID = $("#userId").val(); var passID = $("#passwordId").val(); var myURL = "http://ipaddress/asp/test2.asp"; $.ajax({ type: "GET", url: myURL, dataType: "JSON", data: { username: userID, password: passID, }, success: function (response) { alert(response); } }); }); 

我的.asp:

   

编辑我只是注意到我的第一个js有问题,我正在做一个跨服务器ajax,但是看到了这个指南http://www.codeproject.com/Articles/185506/AJAX-Cross-Origin-HTTP-request (参考对于其他有相同问题的人)不要忘记添加Response.AddHeader“Access-Control-Allow-Origin”,“*”

 $('#loginID').click(function(){ var userID = $("#userId").val(); var passID = $("#passwordId").val(); var myURL = "http://ipaddresss from other server"+userID+"&password="+passID; var cor = null; if (window.XMLHttpRequest) { cor = new XMLHttpRequest(); } else { alert("Your browser does not support Cross-Origin request!"); return; } cor.onreadystatechange = function () { if (cor.readyState == 4) { var loko = cor.responseText; var obj = jQuery.parseJSON(loko); alert(obj.userID); } }; cor.open('GET', myURL, true); cor.withCredential = "true"; cor.send(null); }); 

无论如何问题解决了..只需要改进我的脚本

看起来好像你正在使用aspjson 。

这是一个应该有用的例子。

  <% Dim member, json Set member = jsObject() Dim conn, cmd, rs, sql Dim userid, pwd 'Use POST in your ajax to hide logon values from the URL userid = Request.Form("username") & "" pwd = Request.Form("password") & "" 'Your connection string should be stored in an #include so it can be easily accessed. conn = "Provider=SQLOLEDB.1;Password=password;Persist Security Info=True;User ID=userid;Initial Catalog=SMS;Data Source=127.0.0.1" 'Use parametrised queries instead of being left open to SQL injection. sql = "SELECT * FROM USER_ID WHERE UserID = ? and password = ?" Set cmd = Server.CreateObject("ADODB.Command") With cmd 'No need for ADODB.Connection object, ActiveConnection will instantiate it for us when the ADODB.Command is executed using the connection string. .ActiveConnection = conn .CommandType = adCmdText 'equals 1 if constants not defined .CommandText = sql 'Assuming your fields (in order) are NVARCHAR with a length of 100 (change as appropriate. .Parameters.Append(.CreateParameter("@userid", adVarWChar, adParamInput, 100)) .Parameters.Append(.CreateParameter("@password", adVarWChar, adParamInput, 100)) Set rs = .Execute(, Array(userid, pwd)) If (Not rs.EOF) Then 'Populate jsObject member("userID") = rs("UserID") member("idMember") = rs("IDMember") Else 'Populate with error instead member("error") = 50 End If Call rs.Close() Set rs = Nothing End With Set cmd = Nothing 'Serialize JSObject to a JSON string json = toJSON(member) 'Output JSON response Response.ContentType = "application/json" Call Response.Write(json) %> 

尽管如此

  • 如果您不使用ADO常量,我会认真地建议这样做最简单,最好的方法是使用METADATA导入DLL常量 。

  • 代码如;

     "SELECT * FROM USER_ID where UserID = '" & Request.QueryString("username") & "' and password = '" & Request.QueryString("password") & "'" 

    充满问题的主要问题是SQL注入,通过直接在代码中指定Request.QueryString ,您可以将自己/您的客户端置于滥用状态。 在上面的示例中,我切换到使用带有已定义参数的ADODB.Command ,这样SQL知道会发生什么,并为传递的任何值提供环栅栏。