2017-07-18 23 views
1

ボタンを押した後に問題が発生する。ボタンフックAJAXの下で機能します。 私はバグ//があるヒントを教えてください。ボタンをクリックした後にAjax POSTが機能しない

マイコード:

コントローラー:

[HttpPost] 
    public ActionResult InsertCodesToDB(string name) 
    { 
     cl.InsertCodesToDB(name); 
     fl.MoveCodeFileToAccept(name); 

     string response = "Test"; 
     return Content(response, "application/json"); 
    } 

ビュー/ボタン:

<input type="button" class="btn btn-success sendCodesToDB" value="Umieść kody w bazie" data-value="@item.Name"/> 

ビュー/スクリプト:

<script> 
$('.sendCodesToDB').on('click', function() { 

    var name = $(this).data("value"); 

    $.ajax({ 
     url: '/ActualCodes/InsertCodesToDB', 
     type: 'POST', 
     dataType: 'json', 
     cache: false, 
     data: JSON.stringify({ 'name': 'name' }), 
     success: function (response) { 
       @(ViewBag.MessageOK) = response; 
     }, 
     error: function() { 
      onBegin; 
     } 
    }); 
}); 

function onBegin() { 
     $('#files').hide(); 
     $('#insertFiles').hide(); 
     $('#loading').show(); 
     $('#lblSelectedProductName').text('Trwa umieszczanie kodów w bazie danych. Proszę czekać ...'); 
     $('#ttt').show(); 
} 
</script> 

はあなたの助けのために事前にありがとうございます。

+1

どのエラーが表示されますか?それを 'JSON.stringify({'name':name})、' Remove quote 'に変更してください。 –

+1

はonBegin関数と呼ばれていますか? –

答えて

0

AjaxのコードはJavaScriptである必要があります。そこにC#コードを使用することはできません(いくつかの値を出力する以外)。 @(ViewBag.MessageOK)は、ここで何をしているのです。

success: function (response) { 
    @(ViewBag.MessageOK) = response; 
}, 

あなたが何かしようと、メッセージボックスに応答を表示したい場合は、次の

success: function (response) { 
    $("#your_message_id").html(response); 
}, 

注:それはさておきを、あなたのようにあなたのコード内のいくつかのエラーを持っていますコメントの中には他の人が指摘している。

の1-このようなdataから引用符を削除します。

これに
data: JSON.stringify({ name: name }), 

2 - 変更error:あなたは思え

error: onBegin // You don't need "()" here 
+0

ありがとうございます。私はあなたのヒントをすべて使い、Ajaxは仕事を始めました。 – fnk

1

error: function() { 
    onBegin(); // You need "()" here 
} 

それともこれをよりよくjQueryのon ready関数を追加しないこと。あなたのクリックアクションの前にそれを追加して、onBegin()関数の前に閉じてください。

<script> 
// open here 
$(document).ready(function() { 

    $('.sendCodesToDB').on('click', function() { 

     var name = $(this).data("value"); 

     $.ajax({ 
      url: '/ActualCodes/InsertCodesToDB', 
      type: 'POST', 
      dataType: 'json', 
      cache: false, 
      data: JSON.stringify({ 'name': 'name' }), 
      success: function (response) { 
        @(ViewBag.MessageOK) = response; 
      }, 
      error: function() { 
       // function call missing "()" 
       onBegin(); 
      } 
     }); 
    }); 
// and close here 
}); 

function onBegin() { 
    $('#files').hide(); 
    $('#insertFiles').hide(); 
    $('#loading').show(); 
    $('#lblSelectedProductName').text('Trwa umieszczanie kodów w bazie danych. Proszę czekać ...'); 
    $('#ttt').show(); 
} 
</script> 
+1

これは、スクリプトがHTMLの前(ヘッダーなど)にある場合にのみ必要です。さもなければ、それはOPの問題への解決ではなく、単なる推薦です。現代のデザインでは、HTMLの最後にJavaScriptを配置することをお勧めします。この場合、 'ready'はめったに必要ありません。 –

+0

あなたは正しいですが、それはよくある間違いであることを見て、実際には著者が探している答えかもしれません。 –

+1

)あなたがupvotedしている理由は、合意されました。)しかし、私はOPと今後のすべての読者が現代のデザインを学び、いつreadyが必要なのかを説明したかっただけです。 –

0

あなたは間違った方法でAJAX呼び出し内のデータを送信していると思います。

が、これはあなたを助けるこの

data: JSON.stringify({ name: name }) 

希望のようにそれを試してみてください。

+0

それは間違いなく問題ですが、それは主要な問題ではありません。誰かがコメントでそれをすでに言及しており、それは答えではないので十分です。 –

関連する問題