2016-12-22 2 views
-3

json 데이터를 사용하여 SQL 서버 데이터베이스에서 특정 사용자에 대한 데이터를 가져 오려고했습니다. 그러나 콘솔에서의 항상 보여주는 오류가로 :이 오류를 해결하는 방법 "getPreventDefault() 사용이 권장되지 않습니다. 대신 defaultPrevented를 사용하십시오."

"getPreventDefault의 사용은()는 지원되지 않습니다 대신 사용 defaultPrevented 을.."

값이 데이터베이스에서 검색되지 않습니다.

클라이언트 측 :

<body> 
<form id="form1" runat="server"> 
<table border="0" > 
    <tr> 
     <td> 
      <asp:Label ID= "lblName" runat="server" Text="Name" ></asp:Label> 
     </td> 
     <td> 
      <asp:TextBox ID="txtName" runat="server" Text="" /><br /> 
     </td> 
    </tr> 
    <tr> 
      <td> &nbsp </td> 
    </tr> 
    <tr> 
     <td colspan ="2" > 
      <asp:Button ID="btnShow" Text="Show" runat="server" /> 
     </td> 
    </tr> 
</table> 
    <hr /><asp:GridView ID="gvUsers" runat="server" AutoGenerateColumns="false" HeaderStyle-BackColor="#3AC0F2" 
    HeaderStyle-ForeColor="White" RowStyle-BackColor="#A1DCF2"> 
    <Columns> 
     <asp:BoundField DataField="Username" HeaderText="Username" /> 
     <asp:BoundField DataField="Password" HeaderText="Password" /> 
    </Columns> 
</asp:GridView> 
</form> 
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script> 
<script type="text/javascript" src="http://cdn.jsdelivr.net/json2/0.1/json2.js"></script> 
<script type="text/javascript"> 
    $(function() { 
     $("[id*=btnShow]").bind("click", function() { 
      var user = {}; 
      user.Name = $("[id*=txtName]").val(); 
      user.grd = $("[id*=gvUsers]").val(); 
      $.ajax({ 
       type: "POST", 
       url: "View.aspx/ViewUser", 
       data: '{user: ' + JSON.stringify(user) + '}', 
       contentType: "application/json; charset=utf-8", 
       dataType: "json", 
       success: function (response) { 
        //alert("User has been added successfully."); 
        window.location.reload(); 
       } 
      }); 
      return false; 
     }); 
    }); 
</script> 
</body> 

서버 측 :

내 코드는

<WebMethod()> _ 
<ScriptMethod()> _ 
Public Shared Sub ViewUser(user As Users) 
    Dim grd As GridView 
    grd = user.grd 
    'Dim gvUsers As GridView 
    Dim constr As String = ConfigurationManager.ConnectionStrings("constr").ConnectionString 
    Using con As New SqlConnection(constr) 
     Using cmd As New SqlCommand("SELECT * FROM Users Where Username = @Name") 
      Using sda As New SqlDataAdapter() 
       Dim dt As New DataTable() 
       cmd.CommandType = CommandType.Text 
       cmd.Parameters.AddWithValue("@Name", user.Name) 
       cmd.Connection = con 
       sda.SelectCommand = cmd 
       sda.Fill(dt) 
       'grd.Visible = True 
       grd.DataSource = dt 
       grd.DataBind() 
      End Using 
     End Using 
    End Using 
End Sub 
End Class 
Public Class Users 
Public Property Name() As String 
    Get 
     Return _Name 
    End Get 
    Set(value As String) 
     _Name = value 
    End Set 
End Property 
Private _Name As String 
Public Property grd() As GridView 
    Get 
     Return _grd 
    End Get 
    Set(value As GridView) 
     _grd = value 
    End Set 
End Property 
Private _grd As GridView 
End Class 

하지만 내 datas는 웹 페이지에 표시되지 않습니다. 사전에 감사합니다.

+2

오류는 표시된 코드와 관련이 없습니다. 다른 라이브러리가 귀하의 페이지에 포함되어 있습니까? –

+0

'defaultPrevented = true'를 시도하십시오. – Harish

+0

@RoryMcCrossan : 사용중인 jQuery 버전입니다. –

답변

1

이는 이전 버전의 브라우저를 약간 싫은 방식으로 사용하는 jQuery 버전을 사용하고 있기 때문입니다.

this.isDefaultPrevented=e.defaultPrevented||e.returnValue===!1||e.getPreventDefault&&e.getPreventDefault() 

당신이 볼 수 있듯이, 그것은 defaultPrevented 속성을 사용하려고하지만 기본이 방지되어 있지 않은 경우 getPreventDefault 전화를 계속 않습니다 : 사용중인 버전은이 코드가 있습니다. 따라서 속성이있는 브라우저에서도 기본값이 방지되지 않으면 이전 함수가있는 경우이를 호출합니다.

최신 버전의 jQuery (2.x, 3.x)에서는 getPreventDefault을 더 이상 사용하지 않습니다. 경고를 없애려면 최신 jQuery를 사용하거나 사용중인 해킹을 해킹하여 값을 확인하는 것보다는 속성의 존재 여부를 확인하십시오.

+0

내 JQuery 버전을 변경했지만 여전히 동일한 문제가 발생합니다. – MDP

+0

@MDP : 무엇을 바꾸셨습니까? 나는 최근의 2.x와 3.x를 체크했는데 그들 중 어느 것도'getPreventDefault'에 대한 호출을 가지고 있지 않습니다. –

+0

나는 아직 작동하지 않고 오류가 304 Not Modified로 표시되는 JQuery 버전을 업데이트했습니다. – MDP