Javascript从Web服务获取数据
我是新来的Web应用程序开发我想做一个登录页面,并从本地数据库使用JavaScript获取用户的数据。但是我很难找到我做错事的地方。下面是我的javascript代码Javascript从Web服务获取数据
$(document).ready(function() {
$("#log-in-form").on("submit", function (e) {
e.preventDefault();
var username = $(this).find("input[type=text]").val();
var password = $(this).find("input[type=password]").val();
Authentication(username, password);
});
function Authentication(username,password){
$.ajax({
type: "GET",
url: "../Web Service/LogIn.asmx/get_uinfos",
data: "{'domain':" + username + "', 'accountpassword':'" + password + "'}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (response) {
var result = response.d;
var length = response.length;
$.each(result, function (index, data) {
var alias = data.alias;
window.localStorage.replace("Main.aspx");
});
},
error: function() {
alert('Function Error "get_uinfos"')
}
});
}
});
,我使用Web服务连接到本地服务器使用这些代码
using Wishlist_2017;
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.IO;
using System.Linq;
using System.Security.Cryptography;
using System.Text;
using System.Web.Script.Services;
using System.Web.Services;
namespace Wishlist_2017.Web_Service
{
/// <summary>
/// Summary description for LogIn
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
// To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line.
// [System.Web.Script.Services.ScriptService]
public class LogIn : System.Web.Services.WebService
{
dbconn dbcon = new dbconn();
public class uinfos
{
public int id;
public string alias;
public string monito;
}
static List<uinfos> _get_uinfos = new List<uinfos> { };
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
[WebMethod]
public List<uinfos> get_uinfos(string domain, string accountpassword)
{
DataTable table = null;
SqlCommand cmd = new SqlCommand();
cmd.CommandText = "Retrieve_UserInfo";
cmd.Parameters.AddWithValue("@Domain", domain);
cmd.Parameters.AddWithValue("@Password", accountpassword);
cmd.CommandType = System.Data.CommandType.StoredProcedure;
table = this.dbcon.ExecuteDataTable(cmd);
_get_uinfos.Clear();
foreach (DataRow row in table.Rows)
{
uinfos _list = new uinfos();
_list.id = Convert.ToInt32(row["id"]);
_list.alias = row["Alias"].ToString();
_list.monito = row["Monito"].ToString();
_get_uinfos.Add(_list);
}
return _get_uinfos;
}
}
}
但在试图填补我遇到这个错误的用户名和密码登录控制台
有人可以帮到哪里寻找它我们将不胜感激
EDIT 1:
这是类
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Web;
namespace Wishlist_2017
{
public class dbconn
{
string objConn = ConfigurationManager.ConnectionStrings["Server"].ToString();
public dbconn()
{
//
// TODO: Add constructor logic here
//
}
public DataTable ExecuteDataTable(SqlCommand cmd)
{
DataTable dt = new DataTable();
using (SqlConnection cn = new SqlConnection(objConn))
{
try
{
cn.Open();
cmd.Connection = cn;
cmd.CommandTimeout = 1000;
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(dt);
}
catch (Exception ex)
{
throw ex;
}
finally
{
if (cn.State != System.Data.ConnectionState.Closed)
cn.Close();
}
return dt;
}
}
public void ExecuteNonQuery(SqlCommand cmd)
{
using (SqlConnection cn = new SqlConnection(objConn))
{
try
{
cn.Open();
cmd.Connection = cn;
cmd.CommandTimeout = 1000;
cmd.ExecuteNonQuery();
}
catch (Exception ex)
{
throw ex;
}
finally
{
if (cn.State != System.Data.ConnectionState.Closed)
cn.Close();
}
}
}
public object ExecuteScalar(SqlCommand cmd)
{
object result = null;
using (SqlConnection cn = new SqlConnection(objConn))
{
try
{
cn.Open();
cmd.Connection = cn;
cmd.CommandTimeout = 1000;
result = cmd.ExecuteScalar();
}
catch (Exception ex)
{
throw ex;
}
finally
{
if (cn.State != System.Data.ConnectionState.Closed)
cn.Close();
}
}
return result;
}
}
}
连接字符串在我的web.config中定义服务器的代码
编辑2:
这是连接字符串在我的web.config
<connectionStrings>
<add name="Server" connectionString="Data Source=(LocalDB)\ArnServer; initial Catalog=Wishlist; uid=sa; [email protected]!; Asynchronous Processing=true" providerName="System.Data.SqlClient"/>
</connectionStrings>
这是一个棘手的一个。我花了一些时间才意识到这个问题。该错误表示无法创建Wishlist_2017.Web_Service.LogIn
的实例。你提供的文件似乎表明它在那里它应该是和文件似乎没问题。
但是,在构造函数上下文中,有这样的调用:dbconn dbcon = new dbconn();
。如果那个失败了,它可能会导致类型创建失败,但不是非常具体。
进一步分析,似乎dbconn
文件具有初始化连接类似的方式:
string objConn = ConfigurationManager.ConnectionStrings["Server"].ToString();
如果一个出现故障,dbconn
创建将失败,LogIn
也将随之失效。看起来连接字符串有另一个名字,或者有一些配置无效。
尝试查看是否从dbconn
中删除objConn
初始化解决了类型创建问题。
同意,命名空间看起来不错,只有防止类实例化的东西才是'web.config'中的'Server'连接字符串。 – James
这就是我的想法:) @James –
我尝试使用我的web.config上的凭据,但似乎我的凭据是正确的。请参阅我的帖子上的编辑 –
永远不要手动创建json。与使用任何您使用的语言的json序列化程序相比,它更耗时且更容易出错。
由于不正确的引号,您正在创建的内容无效!
的物体上使用,而不是JSON.stringify()
data: JSON.stringify({'domain': username , 'accountpassword': password }),
这不是问题。您正在解决另一个问题(并且如您所见,复制已删除的答案)。 –
@PatrickHofman必须具有有效的JSON才能开始。删除的答案仍然使用无效的引号。也许还有其他后端问题,但至少有有效的输入可以帮助 – charlietfl
非常微妙的问题,但您的连接字符串行是问题,即
string objConn = ConfigurationManager.ConnectionStrings["Server"].ToString();
ConnectionStrings['xxx']
返回一个对象,而不是字符串本身,你想
string objConn = ConfigurationManager.ConnectionStrings["Server"].ConnectionString;
的确如此,但这会再现另一个错误,就像问题中的错误一样。 –
@PatrickHofman认为这确实解决了问题中的问题,除非我错过了另一个错误?我只能看到一个。 – James
'ToString'不会让类的实例化失败。它仍然重现一个字符串,尽管是无效的。稍后,由于无效的连接字符串,它会失败,但是在创建类之后很长时间。 –
你可以包括你的服务器代码的类定义是什么?另外,很高兴看到你正在使用SQL参数考虑你是新的web开发:) – James
@詹姆斯请参阅编辑。你是这个意思吗?谢谢,但我无法完成工作。 –
你的'LogIn.asmx.cs'中有什么? –