2016-11-08 11 views
-2

以下のスクリプトは、Web APIからjsonデータにアクセスするために使用されます。私はURL "http://localhost:55506/api/Login/submit?username=" + uname + "&パスワード=" + login.password + ""でデータにアクセスしようとしていましたが、変数unameでエラーを返します。 (未定義のunamejsonデータURLにアクセスするためのJavaScript暗号化

しかし、私は、実際のユーザ名&パスワード(http://localhost:55506/api/Login/submit?username=raja&password=abc123)と同じデータにアクセスしようとしたとき。正しいデータを含むテーブルを返します。

ビューのページにユーザーの詳細を表示します。だから私は私のビューページで以下のスクリプトを使用しました

おかげさまで助けを受けてください。

ビューページ

<script> 

    $(function() { 

     var entries = []; 
     var dmJSON = "http://localhost:55506/api/Login/submit?username=" + uname + "&password=" + login.password + ""; 
     $.getJSON(dmJSON, function (data) { 
      $.each(data, function (i, f) { 
       var tblRow = "<tr>" + "<td>" + f.UserID + "</td>" + "<td>" + f.FirstName + "</td>" + "<td>" + f.LastName + "</td>" + "</tr>" 
       $(tblRow).appendTo("#entrydata tbody"); 

      }); 

     }); 

    }); 
</script> 

マイコントローラー

public ActionResult Index(Login login) 
    { 
     if (ModelState.IsValid) // Check the model state for any validation errors 
     { 
      string uname = ""; 
      uname = login.username; 
      string pword = ""; 
      pword = login.password; 
      string url = "http://localhost:55506/api/Login/submit?username=" + uname + "&password=" + pword + ""; 
      System.Net.Http.HttpClient client = new System.Net.Http.HttpClient(); 
      client.BaseAddress = new Uri(url); 
      client.DefaultRequestHeaders.Accept.Clear(); 
      client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json")); 
      HttpResponseMessage responseMessage = client.GetAsync(url).Result; 
      var responseData = responseMessage.Content.ReadAsStringAsync().Result; 
      JsonConvert.DeserializeObject<List<LoginResult>>(responseData); 
      if (responseData.Contains("True")) 
      { 
       return View("Show", login); // Return the "Show.cshtml" view if user is valid 
      } 
      else 
      { 
       ViewBag.Message = "Invalid Username or Password"; 
       return View(); //return the same view with message "Invalid Username or Password" 
      } 
     } 
     else 
     { 
      return View(); 
     } 
     return View(); 
    } 

マイモデル

 public class Login 
{ 
    [Required(ErrorMessage = "Username is required")] // make the field required 
    [Display(Name = "username")] // Set the display name of the field 
    public string username { get; set; } 
    [Required(ErrorMessage = "Password is required")] 
    [Display(Name = "password")] 
    public string password { get; set; }} 

答えて

0

ダウンロードとtが含まれます彼のプラグイン

<script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/3.1.2/rollups/md5.js"> 

とは、あなたがあなたの変数をCONSOLE.LOGすべき

if(CryptoJS.MD5($("#txtOldPassword").val())) != oldPassword) { 

} 

//Following lines shows md5 value 
//var hash = CryptoJS.MD5("Message"); 
//alert(hash); 
0

ように使用し、エラーを参照してくださいね。

最後の二重引用符は、文字列に引用符を追加していません。

詳しい情報は有用であろうが、この試みるすべてのシナリオを試してみて、解決するために:あなたの現在の文字列で何が起こっている

'http://localhost:55506/api/Login/submit?username=' + "'" + uname + "'" + '&password=' + "'" + login.password + "'" 

を二重引用符の最後のセットが出てエスケープされている、Javascriptがあなたの空を守ると考えてスペースが拡張されることから、それは喜んで行います。あなたが推測しているのは、ユーザ名とパスワードが最終変数に引用符で囲まれていて、それらが表す値として展開されることを望んでいたと思います。

私はリテラルになりたい文字を保護するために二重引用符を使用して二重引用符を単一文字に置き換えました。

あなたはそれが行われます一度変数が正確に何を表示するにconsole.logまたは警告を追加する必要があります:あなたは、その後のログを取る必要がありますすることができ

var entries = []; 
    var dmJSON = "your string" 
console.log (dmJSON) 
//the rest of your code 

が、それはまさにあなたが表示されます変数に入れられます。

すべてのことは、暗号化されていない取得要求で情報を送信することはまったく安全ではないということです。情報はUrlに明示的に印刷されます。投稿要求は最低でも使用する必要があり、httpsで送信する方が望ましいです。

+0

console.log(dmJSON)を使用するとエラーが発生します。エラーは未定義です:unameです。これは、una​​meを ...と親切に比較します。私はこの問題を解決するために提案します。事前に感謝します –

+0

あなたの変数がフォームに渡されていないようです。私はあなたのコードの詳細(具体的にどのように関数を呼び出すのか、どこから変数が来るのか)を見なければならないでしょう。 URLとjQueryが正しく動作しているかどうかをテストして確認するには、スクリプト内の変数に手動で名前を付けます。 var uname = "raj"; var loginpassword = "abc123"; 変数を設定するには、期間を削除する必要があります。同じことをdmJSON文字列で行う必要があります。次に、関数をテストします。それがうまくいくなら、あなたの関数がうまくいて、問題が値を渡していることが分かります。 – jcalton88

+0

こんにちは@ jcalton88。変数を手動で定義してアクセスしようとしましたが、うまくいきます。上記のコードは私の完全なコードです。変数** uname **がコントローラ内で宣言されています。しかし、それは私の渡す変数にまだエラーを示しています。親切にお勧めします。 –

関連する問題