2017-02-22 7 views
1

データベースに電子メールアドレスが存在するかどうかを確認しようとしています。私は私のjQuery(私のビューをきれいに保つため)を呼び出すために使用している外部JavaScriptファイルがあります。おそらく、SSLを有効にして実行しているためですか?コントローラーで外部JavaScriptファイルのAJAX呼び出しがコントローラのActionResultに到達していない

function checkemail() { 
    var email = $("#email").val(); 
    $.ajax({ 
     url: "/Account/CheckEmailExists/", 
     data: JSON.stringify({ p: email }), 
     type: "POST", 
     contentType: "application/json; charset=utf-8", 
     success: function (data) { 
      alert(data) 
     } 
    }); 
} 

アクション:

public ActionResult CheckEmailExists(string p) 
      { 
       bool bEmailExists = false; 

       using (RBotEntities EF = new RBotEntities()) 
       { 
        var query = (from U in EF.AspNetUsers 
           where U.Email == p 
           select U).FirstOrDefault(); 

        if(query.Email != null) 
        { 
         bEmailExists = true; 
        } 
        else 
        { 
         bEmailExists = false; 
        } 
       } 

       return Json(bEmailExists, JsonRequestBehavior.AllowGet); 
      } 

私は次のことを示すエラーを取得しているようだ:

XML Parsing Error: no root element found Location: https://localhost:44347/Account/CheckEmailExists/ Line Number 1, Column 1:

JS外部ファイルに

機能(Iは、HTTPSを使用しています)

私はこのActionResultが存在しないことを理解しています。しかし、それはありますか?

私は何か間違っているのですか、またはActionResultを外部のJavaScriptファイルから呼び出せない理由がありますか?

+0

コントローラは要求を受け取りましたが、XMLとして読み取り中です。どのバージョンのASP.NETを使用しますか? MVC2にはMVC3の機能が組み込まれていますが、組み込みのjsonサポートはありません。 – KarelG

+0

私はMVC 5を使用しています – AxleWack

答えて

1

I Fだから、このコントローラーで

[httppost] 
public ActionResult CheckEma......... 

JS

function checkemail() { 
    var email = $("#email").val(); 
    $.ajax({ 
     url: "/Account/CheckEmailExists/", 
     data: { p: email }, 
     type: "POST", 
     success: function (data) { 
      alert(data) 
     } 
    }); 
} 
Json.Stringifyため
+0

コントローラーにまだアクセスしておらず、何もないか空のストリングと思われるデータが返されています – AxleWack

+0

[HttpPost]をコントローラーに追加しましたが、結果は変わりません。あなたが昨日提案したことを試してみましたが、何も問題はありません...私のポストと同じエラーです:XML解析エラー:ルート要素が見つかりません 場所:https:// localhost:44347/Account/CheckEmailExists/ – AxleWack

+0

エラーは何ですか? – codemirror

1

不要とここContentType

function checkemail() { 
     var email = $("#email").val(); 
     $.ajax({ 
      url: "/Account/CheckEmailExists", 
      data: { p: email }, 
      type: "POST", 
      success: function (data) { 
       alert(data) 
      } 
     }); 
    } 
+0

コントローラーにまだアクセスしておらず、何もないか空の文字列であると思われるデータがまだ返されています – AxleWack

+0

Ajax UrlでCheckEmailExistの後に '/'を取り除きます –

+0

電子メールの存在を確認するためにリモート検証を使用していないのはなぜですか? –

0

をお試しください問題を引き起こしていたものを除外してください...

私のアクション結果の上に、[AllowAnonymous]データ注釈を追加する必要がありました。その後、ActionResultに達しました。私は匿名を許可しないことを好むだろうが、それは動作し、他の人を助ける場合にこれを共有したいと思った。

のActionResult:

[AllowAnonymous] 
public ActionResult CheckEmailExists(string p) 
{ 
    bool bEmailExists = false; 

    using (RBotEntities EF = new RBotEntities()) 
    { 
     var query = (from U in EF.AspNetUsers 
        where U.Email == p 
        select U).FirstOrDefault(); 

     if (query.Email != null) 
     { 
      bEmailExists = true; 
     } 
     else 
     { 
      bEmailExists = false; 
     } 
    } 

    return Json(bEmailExists, JsonRequestBehavior.AllowGet); 
} 

JavaScriptの機能のJavaScriptファイルで:以下の私のコードがある

function checkemail() { 
    var email = $("#email").val(); 
    var bReturnedValue = false; 
    $.ajax({ 
     url: "/Account/CheckEmailExists/", 
     data: { p: email }, 
     async: false, 
     success: function (data) { 
      if(data) 
      { 
       bReturnedValue = true; 
      } 
      else 
      { 
       bReturnedValue = false; 
      } 
     } 
    }); 

    return bReturnedValue; 
} 

そして、これは私が(私はメールが存在することを指定するには、ポップオーバーをやって、それを開始した方法です):

$("#createacc_next").click(function() { 
var bEmailExists = false; 

bEmailExists = checkemail(); 

if (bEmailExists) { 
      $("#email").attr("disabled", false).css("border-color", "red"); 
      $('#email').popover({ title: 'Attention', content: 'Email address already exists', placement: 'top', trigger: 'focus' }); 
      Email_Validation_Passed = false; 
     } 
}) 
関連する問題