2013-08-17 4 views
1

Я не знаю, где проблема, мой код выглядит отлично, и я старался изо всех сил, но все время получал ошибку.Ошибка при вводе данных с помощью JSON и Ajax

Вот мой код:

Markup:

<link href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.1/themes/base/jquery-ui.css" rel="stylesheet" type="text/css" /> 
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script> 
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.1/jquery-ui.min.js"></script> 

<script type="text/javascript"> 
    $(document).ready(function(){ 
     $("#Button1").click(function(){  
      var Name=document.getElementById('Text1').value 
      var Class=document.getElementById('Text2').value 
      var Data=JSON.stringify({Name:Name,Class:Class}); 
      alert(Data);  
      $.ajax({ 
       type: 'POST', 
       contentType: "application/json; charset=utf-8", 
       url: 'Default.aspx/InsertData', 
       data:Data, 
       async: false, 
       success: function (response) { 
        $('#Text1').val(''); 
        $('#Text2').val('');     
       }, 
       error: function() { 
        alert("Error") 
       } 
      }); 
     }); 
    }); 
</script> 

ASP.NET AJAX страница Методы в фоновом коде:

[WebMethod] 
public string InsertData(string Name, string Class) 
{ 
    SqlCommand cmd = new SqlCommand("Insert into employee(EmployeeName,Class) values(@EmpName,@Classs)",con); 
    cmd.Parameters.AddWithValue("@EmpName", Name); 
    cmd.Parameters.AddWithValue("@Classs",Class); 
    cmd.ExecuteNonQuery(); 
    con.Close(); 

    return "True"; 
} 

ответ

0

ASP. NET AJAX Страница Методы должны быть static, сменить ваш код:

[WebMethod] 
public static string InsertData(string Name, string Class) 
{ 
    SqlCommand cmd = new SqlCommand("Insert into employee(EmployeeName,Class) values(@EmpName,@Classs)",con); 
    cmd.Parameters.AddWithValue("@EmpName", Name); 
    cmd.Parameters.AddWithValue("@Classs",Class); 
    cmd.ExecuteNonQuery(); 
    con.Close(); 

    return "True"; 
} 

Прочтите Why do ASP.NET AJAX page methods have to be static? для объяснения причин.

+0

спасибо за помощь sir :-)) –

1

Вам не нужно stringify его.

Без stringifying просто пройти

"{'Name':'"+Name+"','Class':'"+Class+"'}" 

Если вы хотите передать строковой объект он должен быть, как показано ниже

JSON.stringify({'Name':Name,'Class':Class}); 

Посмотреть Котировки добавил.

var Data=JSON.stringify({'Name':Name,'Class':Class}); 
     alert(Data);  
     $.ajax({ 
     type: 'POST', 
     contentType: "application/json; charset=utf-8", 
     url: 'Default.aspx/InsertData', 
     data:Data, 
     async: false, 
     success: function (response) { 
          $('#Text1').val(''); 
          $('#Text2').val(''); 

         }, 
         error: function() 
         { alert("Error") } 
     }); 

А в коде страницы обратно

[WebMethod] 
     public string InsertData(myobj getdat) 
     { 
      SqlCommand cmd = new SqlCommand("Insert into employee(EmployeeName,Class) values(@EmpName,@Classs)",con); 
      cmd.Parameters.AddWithValue("@EmpName", getdat.Name); 
      cmd.Parameters.AddWithValue("@Classs",getdat.Class); 
      cmd.ExecuteNonQuery(); 
      con.Close(); 

      return "True"; 
     } 
public class myobj 
{ 
public string Name {get;set;} 
public string Class{get;set;} 
} 
+0

спасибо subin jacob –

1

Попробуйте это:

Метод должен быть статический если он находится в ASPX коде страницы за

[WebMethod] 
    public static string InsertData(string Name, string Class) 
    { 
     SqlCommand cmd = new SqlCommand("Insert into employee(EmployeeName,Class) values(@EmpName,@Classs)",con); 
     cmd.Parameters.AddWithValue("@EmpName", Name); 
     cmd.Parameters.AddWithValue("@Classs",Class); 
     cmd.ExecuteNonQuery(); 
     con.Close(); 

     return "True"; 
    } 
+0

Спасибо за помощь помощь sir –

Смежные вопросы