2016-08-02 134 views
1

我特林使用AJAX和触发conteroller数据掠过我的MVC项目JQuery/MVC/ajax如何使用ajax发布数据到控制器?

这是我的控制器

public class FileController : Controller 
{ 
    [HttpPost] 
    public ActionResult Index(string data) 
    { 
     return View(); 
    } 
} 

这是JS

$('#getmessage').on('click', function() { 
     var text = ''; 
     $('#discussion>li').each(function() { 
      text += $(this).text(); 
      text += '\n' 
     }) 
     console.log(text) 

     $.ajax({ 
      url: 'http://localhost:22828/File/Index', 
      type: 'POST', 
      data: text, 
      success: function (result) { 
       console.log("data sended"); 
      } 
     }) 
    }) 

我需要通过文本控制器,但在我的控制器中,我得到了NULL
有人可以请说明一点吗?
在此先感谢

回答

2

更改您的Javascript来此:

$('#getmessage').on('click', function() { 
     var text = ''; 
     $('#discussion>li').each(function() { 
      text += $(this).text(); 
      text += '\n' 
     }) 
     console.log(text) 

     $.ajax({ 
      url: 'http://localhost:22828/File/Index', 
      type: 'POST', 
      data: { data: text }, // This is all you have to change 
      success: function (result) { 
       console.log("data sended"); 
      } 
     }) 
    }) 
+0

控制器仍然获得数据= null – barak

+0

当你做'console.log(文本)',有什么吗?另外请记住用';'关闭你的线条,这样可以让每个人都更容易知道线路的起点和终点。 – Morgs

+0

是在我的console.log我得到的文字 – barak

0

传递记录data这样,

url: 'File/Index?data=' + text, // Just make change here.. 

你只需要改变要传递给控制器​​的URLAction是这样的。

$('#getmessage').on('click', function() { 
    var text = ''; 
    $('#discussion>li').each(function() { 
     text += $(this).text(); 
     text += '\n' 
    }) 
    console.log(text) 

    $.ajax({ 
     url: 'File/Index?data=' + text, // Just make change here.. 
     type: 'POST', 
     data: text, 
     success: function (result) { 
      console.log("data send"); 
     } 
    }) 
}) 
+0

仍然无法正常工作,在我的控制器中获取text = null – barak

+0

通过将'debugger'放入其中,首先在JavaScript中检查您的文本。并通过把静态值检查... –

0

您错过了控制器中的[FromBody]标记。默认情况下,ASP.NET将尝试绑定来自URL的简单参数,并且仅从主体中复杂。

试试这样说:

public class FileController : Controller 
{ 
    [HttpPost] 
    public ActionResult Index([FromBody] string data) 
    { 
     return View(); 
    } 
} 

欲了解更多详情,请参阅相关的this答案。

相关问题