2014-03-28 36 views
1

我有一個問題,有關在堆棧溢出搜索它的ajax調用請求嘗試所有相關的幫助,我得到但無法解決問題。問題是我使用這段代碼向我的視圖請求一個控制器。Ajax jquery發送空值到Mvc4控制器

<script type="text/javascript"> 

    $(document).ready(function() { 

     $('#contactDiv ').click(function() { 

      var number = $(this).find('.ContactNumber').text(); 

      var dataJson = {"contactNumber": number}; 

      $.ajax({ 
       type: "POST", 
       url: "../contactWeb/messages", 
       data: JSON.stringify(dataJson), 
       //data: dataJson, 
       //contentType: "application/json", 
        contentType: "application/json", 
       cache: false, 
       success: function (msg) { 
        //msg for success and error..... 
        alert(msg); 
        return true; 
       } 
      }); 

     }); 

    }); 

</script> 

和接收呼叫控制器

 [HttpPost] 
     public JsonResult messages(string dataJson) 
     { 

      Int64 userID = Convert.ToInt64(Session["userId"]); 
      try 
      { 
       List<MessagesModel> messagesModel = new List<MessagesModel>(); 
       IMessages MessageObject = new MessagesBLO(); 

       messagesModel = MessageObject.GetAllMessagesWeb(userID , dataJson); 

       //ViewData["Data"] = messagesModel; 



      } 
      catch (Exception e) 
      { 

      } 

      //return View(); 

      string msg = "Error while Uploading...."; 
      return Json(msg, JsonRequestBehavior.AllowGet); 
     } 

,但如果你想獲得JSON的消息(它傳遞NULL值控制器

回答

0

嗨你能就改變你的參數string dataJson在你的行動contactNumber的名稱,您通過Ajax的傳遞對象調用

[HttpPost] 
    public JsonResult messages(string contactNumber) //here 
    { 

     Int64 userID = Convert.ToInt64(Session["userId"]); 
     try 
     { 
      List<MessagesModel> messagesModel = new List<MessagesModel>(); 
      IMessages MessageObject = new MessagesBLO(); 

      messagesModel = MessageObject.GetAllMessagesWeb(userID , contactNumber); //and here 

      //ViewData["Data"] = messagesModel; 



     } 
     catch (Exception e) 
     { 

     } 

     //return View(); 

     string msg = "Error while Uploading...."; 
     return Json(msg, JsonRequestBehavior.AllowGet); 
    } 
+0

仍然無法正常工作,我試過那個earllier @Inanikian – ShodowOverRide

+0

亞但感謝我現在得到它......「應用程序/ JSON」應該在那裏,而不是隻是「JSON」 – ShodowOverRide

-4

)試試這個:

<script type="text/javascript"> 

    $(document).ready(function() { 

     $('#contactDiv ').click(function() { 

      var number = $(this).find('.ContactNumber').text(); 

      var data = {"contactNumber": number}; 
      var dataJson = JSON.stringify(data); 
      $.ajax({ 
       type: "POST", 
       url: "../contactWeb/messages", 
       dataType: 'text', 
       data: "dataJson=" + dataJson, 
       //data: dataJson, 
       //contentType: "application/json", 
       cache: false, 
       success: function (msg) { 
        //msg for success and error..... 
        alert(msg); 
        return true; 
       } 
      }); 

     }); 

    }); 

</script> 
2

有幾個問題需要修正

最新的

JsonRequestBehavior.AllowGet 

的需要,當你action類型是post

如果您正在使用asp.net mvc4使用Url.Action指定的URL即

url:"@Url.Action("ActionName","ControllerName")" 

現在談論你的問題。

你的參數名稱必須相匹配,改變dataJsoncontactNumber .Though其確定使用心不是任何需要使用JSON.stringify爲您傳遞一個字符串參數。

[HttpPost] 
     public JsonResult messages(string contactNumber) 
     { 

      Int64 userID = Convert.ToInt64(Session["userId"]); 
+0

亞,但由於我知道了現在......「應用程序/ JSON「應該在那裏,而不是隻是」JSON「 – ShodowOverRide

+0

謝謝你是有幫助的。 :) –

相關問題