2016-08-02 15 views
1

私は私のMVCプロジェクトにAJAXとトリガーconterollerを使用してデータを渡すためにトリングいJQuery/MVC/ajax ajaxを使用してコントローラにデータを投稿する方法は?

これはこれは私がにテキストを渡す必要が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"); 
      } 
     }) 
    }) 

である私のコントローラ

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

ですコントローラは、私のコントローラで取得する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

コントローラはまだデータ=ヌルを取得します – barak

+0

'console.log(text)'を実行すると何かありますか? ';'をつけて行を閉じることを覚えておいてください。これにより、誰もが行の開始と終了を簡単に知ることができます。 – Morgs

+0

はい、私のconsole.logにはテキストがあります – barak

0

レコードこのようなdataを渡し、

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

をあなたはちょうどあなたがコントローラに渡しているURLを変更する必要がありますこのようなAction

$('#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

JavaScriptでテキストを確認するには、最初に 'debugger'を入れてください。また、静的な値を置くことでチェック... –

0

コントローラーに[FromBody]タグがありません。デフォルトでは、ASP.NETは単純なパラメータをURLからバインドしようとし、複雑なものだけを本体からバインドしようとします。

このようにそれを試してみてください。詳細については

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

this関連の回答を参照してください。

関連する問題