javascript - Ajax 发布后页面重新加载

标签 javascript jquery ajax asp.net-mvc json

我正在使用 asp.net MVC 制作单页应用程序

当我从 Ajax 发送到服务器时,Web API 验证发送的参数,然后返回一个 Json 字符串。这是我的 Web API 中的函数

Public Class VerifyReturn
    Public SerBool As String
    Public SerMessage As String
    Public TextBool As String
    Public TextMessage As String
End Class

<HttpPost>
Public Function ValidateParam(ByVal ser As Integer, ByVal content As String) As List(Of VerifyReturn)
    Dim ErrorsJson As String = ""
    Dim Errors As Boolean = False


    Try
        If Not ser = Nothing AndAlso IsNumeric(ser) = True Then  
            ErrorsJson &= "[{""SerBool"":""0"",""SerMessage"":"""","
        Else
            ErrorsJson &= "[{""SerBool"":""1"",""SerMessage"":""Not Valid."","
            Errors = True
        End If

       If Not content Is Nothing AndAlso content.Length < 151 Then
            ErrorsJson &= """TextBool"":""0"",""TextMessage"":""""}]"
       Else
            ErrorsJson &= """TextBool"":""1"",""TextMessage"":""Content Too Large.""}]"
            Errors = True
        End If

        Dim ReturnJson = JsonConvert.DeserializeObject(Of List(Of VerifyReturn))(ErrorsJson)
        Return ReturnJson


    Catch ex As Exception

    End Try
End Function

这是我的 Ajax:

 $(document).ready(function () {
      $('#BtnInsert').click(function () {

           $.ajax({
                    url: '@Url.Content("~/api/ContentM/ValidateParam?ser=")' + $('#SerList').val() + ("&content=") + $('#TxtContent').val(),
                    type: 'POST',
                    success: function (responseData) {
                        for (var i = 0; i < responseData.length; i++) {

                            If(responseData[i].TextBool == '1')
                            {
                                $('#LblErrors').val(responseData[i].TextMessage);
                            }
                        }
                    }
                });
          });
      });

API函数正在被触发,并且服务器端程序运行良好,

但是当 ajax 调用完成时,页面重新加载,并且我在 $('#LblErrors') 标签中看不到任何内容。

我做错了什么?

最佳答案

如果我没记错的话,使用 <button></button>在 HTML 上,会自动提交表单。那可能是你的问题。解决这个问题的一种方法是输入 return false正如我们的 friend 上面所说的。所以应该是这样的:<button id="BtnInsert" onclick="return false">Insert</button> 。另一种方法是防止在 .click(function(e) 内自动提交函数使用 e.preventDefault()

关于javascript - Ajax 发布后页面重新加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23649459/

相关文章:

javascript - 在自定义下拉菜单 Angular 5 中使用箭头导航?

javascript - sweet-alert 在文本中显示 HTML 代码

jquery - 使用 jQuery 验证插件显示摘要和单独的错误消息

jquery - 使用 jQuery 和 Ajax 填充第二个下拉列表

javascript - 为什么我的 $_POST 为空,但 file_get_contents ('php://input' ) 不是?

javascript - Bootstrap - 如何让展开的表格切换更改背景颜色?

javascript - 如何在JavaScript中的每组数字后面插入一个字符?

javascript - 如何在 jQuery/javascript 中复制此图像缩放动画效果?

外部链接上的 jQuery Mobile 后退按钮导致奇怪的问题

javascript - jQuery - 将图像 src 分配给变量分配图像数据