2016-03-21 107 views
-3

嗨,我從數據庫中選擇數據,我希望這些數據從我的控制器通過ajax查看,但它不工作。傳遞數據從控制器查看使用ajax

請幫助我嗎?

這裏是我的控制器:

[HttpGet] 
     public ActionResult Foo(string email_uzivatele) 
     { 
      var person = AdvertServiceLayer.Instance.SelectByEmail(email_uzivatele); 
      return Json(person, JsonRequestBehavior.AllowGet); 
     } 

在這裏,我想這是我從數據庫中選擇顯示電子郵件:

<input id="email" name="email_uzivatele" type="text" class="form-control input-md"> 

這裏是我的ajax功能:

$(function() { 
      function getPerson(email_uzivatele) { 
       $.ajax({ 
        url: '@Url.Action("Foo", "Home")', 
        type: 'GET', 
        dataType: 'json', 

        cache: false, 
        data: { email_uzivatele: email_uzivatele }, 
        success: function (person) { 
         $('#email').val(person.email_uzivatele); 
        } 
       }); 
      } 
     }); 

這裏是功能從數據庫中選擇電子郵件:

 public List<Advert> SelectByEmail(string email_uzivatele) 
       { 



        string queryString = "SELECT distinct email_uzivatele from 

    Reklama 
    where email_uzivatele like '%" + @email_uzivatele + "%'"; 
        // Create the Command and Parameter objects. 
        SqlCommand command = new SqlCommand(queryString, Connection); 

        command.Parameters.AddWithValue("@email_uzivatele", ""); 

        // Open the connection in a try/catch block. 
        // Create and execute the DataReader, writing the result 
        // set to the console window. 
        try 
        { 

         SqlDataReader reader = command.ExecuteReader(); 
         List<Advert> advert = new List<Advert>(); 
         while (reader.Read()) 
         { 

          Advert a = new Advert(); 
          a.email_uzivatele = reader[0].ToString(); 



          Console.WriteLine("email_uzivatele: " + " " + " 
" + a.email_uzivatele); 

          advert.Add(a); 
         } 

         reader.Close(); 
         return advert; 
        } 
        catch (Exception ex) 
        { 
         chyba.zapsat_do_souboru(ex.Message); 
         Console.OpenStandardOutput(); 
         Console.WriteLine(ex); 
         //zalogovat chybu 
         return null; 
        } 


       } 
+0

檢查值是否正確。保持警報警報(人)和警報(person.email_uzivatele),看看值是否正確,只是綁定問題 –

+0

我添加了警報沒有發生。認真的是我做錯了什麼? –

+0

如果你的'SelectByEmail'函數返回一個列表..那麼你的ajax成功應該使用一個索引來獲得值'$('#email')。val(person [0] .email_uzivatele);' – JamieD77

回答

2

我認爲問題來自url屬性。其他一切似乎都是正確的。我會推薦你​​使用更好的方法是使用Ajax html helper。我向你展示兩個例子 - ajax helper和jquery。

AJAX輔助方法 - >我喜歡它,因爲MVC視圖保持清潔,無JS使來自不同文件中的某些要求

@using (Ajax.BeginForm("AddToArticle", "Comments", null, new AjaxOptions 
                    { 
                     HttpMethod = "POST", 
                     InsertionMode = InsertionMode.InsertBefore, 
                     UpdateTargetId = "comments-list", 
                     OnSuccess = "acceptedComment", 
                     OnFailure = "rejectedComment" 
                    })) 
      { 
       @Html.AntiForgeryToken() 

       <input type="hidden" value="@Model.Id" name="toId"/> 
       <div class="row bottom-margin"> 
        <div class="col-md-12"> 
         <textarea id="comment-area" class="form-control" placeholder="Коментар" rows="5" name="content"></textarea> 
        </div> 
       </div> 
       <div> 
        <input type="submit" class="show-more cat-sports" title="Post comment" value="Добави"/> 
       </div> 
      } 

在這裏,你可以很容易地把[ValidateAntiForgery]屬性上你的行動,它會被驗證自動如果你有@ Html.AntiForgeryToken()在你的視圖。使用JS,您也可以驗證防僞標記。它可以防止您受到XSRF攻擊並提高安全性。最佳實踐指出,它必須堅持每個POST請求。

這是jQuery的一個例子。你在這種情況下,錯誤是url屬性

你應該把它作爲網址是這樣的:

$.ajax({ 
    url: "/Home/Foo", 

我希望這能解決您的問題。 致以問候

+0

PS:您也可以使用縮短語法 - $ .post(「ajax/test.html」,function(data){ $(「.result 「).html(data); }); –

+0

我改變了我的網址爲url:「/ Home/Foo」但它仍然不工作,Ajax html helper我不知道如何在我的情況下使用 –

1

我再次讀過您的問題,我發現您的概念錯誤。我將在接下來的幾行中解釋我的意思。所以..

沒有這樣的事情,通過ajax從控制器傳遞數據。您只能將視圖中的ajax數據傳遞給控制器​​。它用於SPA功能的情況下。如果你想加載數據並在視圖中顯示它,你應該在MVC中使用視圖模型並直接在視圖中加載它。

我已經讓你成爲一個工作的例子,我會解釋給你。第一件事是你沒有調用你的函數。

在這種情況下,我做了一個簡單的例子,告訴你這個想法是什麼。

這是控制器

[HttpGet] 
    public ActionResult Foo(string email_uzivatele) 
    { 
     return Json(email_uzivatele, JsonRequestBehavior.AllowGet); 
    } 

這些都是HTML輸入

<input id="email" name="email_uzivatele" type="text" class="form-control input-md"> 
<input id="submit-btn" type="submit" value="Sumbit" /> 

這是你的JS功能

$(function() { 

    $('#submit-btn').on('click', function() { 

     var email_uzivatele = $('#email').val(); 

     $.ajax({ 
      url: '/Home/Foo', 
      type: 'GET', 
      dataType: 'json', 
      cache: false, 
      data: { email_uzivatele: email_uzivatele }, 
      success: function (person) { 
       $('#email').val(person.email_uzivatele); 
      } 
     }); 
    }); 
}); 

在這種情況下,您通過您輸入的值在您的文本框中通過提交按鈕上的ajax進入控制器點擊

+0

謝謝,但我問這個問題,因爲我需要從我的數據庫,然後我想用ajax和google圖表在圖表中顯示這些數據:https://google-developers.appspot.com/chart/interactive/docs/gallery/piechart#example。但我不知道如何去做。請讓任何想法知道如何去做? –

相關問題