2017-07-18 88 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}),'刪除引號。 –

+1

是否在onBegin函數中被調用? –

回答

0

Ajax中的代碼必須是JavaScript。你不能在那裏使用C#代碼(除了打印一些值)。什麼是@(ViewBag.MessageOK)在這裏做什麼:

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

如果你想顯示在消息框中的響應,你可以試試:

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

注:除此之外,你必須在你的代碼的幾個錯誤,其他人在評論中指出。

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

2-更改error這樣::

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

或者更好的是:

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

非常感謝。我用了所有的提示和ajax開始工作。 – fnk

1

你似乎

1-從data這樣刪除引號不要爲jQuery添加on就緒函數。嘗試在你的點擊動作之前添加它並在你的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的問題。在現代設計中,總是建議將JavaScript放在HTML的末尾,在這種情況下,很少需要「ready」。 –

+0

你是對的,但是看到這是一個常見的錯誤,它可能實際上是作者正在尋找的答案。 –

+1

同意,這就是爲什麼你是upvoted;),但我只是想解釋爲OP和所有未來的讀者學習現代設計,並在什麼時候「準備」是必需的。 –

0

我想你是以錯誤的方式在AJAX調用中發送數據。

嘗試像這樣

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

希望這會幫助你。

+0

這絕對是一個問題,但它不是主要問題。有人已經在評論中提到了這一點,這就足夠了,因爲這不是一個答案。 –