2016-03-29 18 views
1

DB'ye karşılık gelen ön uç ve C# asmx hizmeti için açıyorum kullanıyorum.angularjs - SyntaxError: Sunucudan istek döndüğünde beklenmeyen bir belirteç

Kullanıcının parolasını doğrulamak için hizmetim var. C# hizmeti, parolayı döndürür ve açısal hizmet doğrulamaları.

C# hizmeti:

[WebMethod] 
[ScriptMethod(ResponseFormat = ResponseFormat.Json)] 
public void Auth(string username) 
{ 
    string password = ""; 
    using (SqlConnection con = new SqlConnection(GetConnectionString())) 
    { 
     SqlCommand cmd = new SqlCommand("Select PASSWORD from users where USERNAME = '" + username + "'", con); 

     //Open Connection 
     con.Open(); 

     //To Read From SQL Server 
     SqlDataReader dr = cmd.ExecuteReader(); 

     while (dr.Read()) 
     { 
      password = dr["PASSWORD"].ToString(); 
     } 

     //Close Connection 
     dr.Close(); 
     con.Close(); 
     this.Context.Response.ContentType = "application/json; charset=utf-8"; 
     this.Context.Response.Write(password); 

    } 
} 

açısal hizmeti:

service.Login = function (username, password, callback) { 
     var q = $q.defer; 
     $http({ 
      url: 'services/ShiftLogService.asmx/Auth', 
      dataType: "json", 
      method: "POST", 
      data: { username: username } 
     }).success(function (data) { 
      console.log(data); 
     }).error(function (data) { 
      // q.reject(); 
     }); 
     return q.promise; 

    }; 

C# hizmeti ince davranır. Cevap iyi. Bunun en iyi uygulama veya güvenlik olmadığını biliyorum, lütfen bir kenara bırakın.

açısal hizmet

SyntaxError: Unexpected token l 
at Object.parse (native) 
at uc (http://localhost:15380/bower_components/angular/angular.min.js:17:6) 
at ac (http://localhost:15380/bower_components/angular/angular.min.js:90:253) 
at http://localhost:15380/bower_components/angular/angular.min.js:91:164 
at q (http://localhost:15380/bower_components/angular/angular.min.js:7:355) 
at ed (http://localhost:15380/bower_components/angular/angular.min.js:91:146) 
at c (http://localhost:15380/bower_components/angular/angular.min.js:92:403) 
at http://localhost:15380/bower_components/angular/angular.min.js:128:305 
at m.$eval (http://localhost:15380/bower_components/angular/angular.min.js:142:467) 
at m.$digest (http://localhost:15380/bower_components/angular/angular.min.js:140:47)(anonymous function) @ angular.js:13363(anonymous function) @ angular.js:10162(anonymous function) @ angular.js:15621m.$eval @ angular.js:17059m.$digest @ angular.js:16771m.$apply @ angular.js:17121g @ angular.js:11298x @ angular.js:11561v.onload @ angular.js:11624 

Bana bunda yardım edebilir atar? Teşekkürler.

+0

ağ sekmesini açın ve yanıtınızı kontrol eder misiniz geçerli değil JSON –

+0

Neden yöntem 'geçersizdir '? Bir 'string' döndürmek daha iyi olmaz mıydı ve JSON dönüş verilerini serileştirir mi? Bir web servisinin, veriyi yanıt akışına yazmak yerine 'return' deyimini kullanarak döndüreceğini düşündüm. Belki bu önemli değil, ama yine de JSON'un bir JSON dizesi olarak verileri serileştirmesi gerektiğini ve bunu cevap akışına yazmanız gerektiğini düşünüyorum. '{password:" password "}' –

cevap

1

Bunun nedeni, dize ve geçerli json geçerli değil.

public class PassWordClass{ 
    public string Password {set; get;} 
} 

[WebMethod] 
[ScriptMethod(ResponseFormat = ResponseFormat.Json)] 
public PassWordClass Auth(string username) 
{ 
    string password = ""; 
    using (SqlConnection con = new SqlConnection(GetConnectionString())) 
    { 
     SqlCommand cmd = new SqlCommand("Select PASSWORD from users where USERNAME = '" + username + "'", con); 

     //Open Connection 
     con.Open(); 

     //To Read From SQL Server 
     SqlDataReader dr = cmd.ExecuteReader(); 

     while (dr.Read()) 
     { 
      var pass = new PassWordClass(); 
      pass.Password = dr["PASSWORD"].ToString(); 
      return pass; 
     } 
    } 
} 

bu talep json dönüşümü doğru yoludur: yanıttır gibi görünüyor,

$http({ 
      url: 'services/ShiftLogService.asmx/Auth', 
      responseType : "json", //<-- change like that 
      method: "POST", 
      data: { username: username } 
     }) 
+0

Bunu zaten denedim. Şimdi beklenmedik bir simge '{' –

+0

Hala aynı ... –

+0

@SaarKuriel denedim cevabı –

İlgili konular