2012-05-08 6 views
-4

私のデータベースには、JQuery Ajax関数と とWebMethodを使用してデータをAjax経由で送信しようとしています。しかし、それは動作していません。何か案は?

$(function() { 
    $('#Add').click(function() { 
     var $dialog = $('<div id="MyDialog"></div').appendTo('body') 
      .load("../Pop-up.aspx #pop-up", createDatePicker) 
      .dialog({ 
       position: 'center', 
       width: 550, 
       buttons: { 
        "OK": function() { 
         var jname = $('#name').val(); 
         var jbirthday = $('#datepicker').val(); 
         var jgender = $('input:radio[name=Gender]:checked').val(); 
         var jcourseId = $('#DropDownList1').val(); 
         var myjson = { 
          name: jname, 
          birthday: jbirthday, 
          gender: jgender, 
          courseId: jcourseId 
         }; 

         $.ajax({ 
          type: "post", 
          contentType: "application/json;charset=utf-8", 
          dataType: "json", 
          url: "Manage.aspx/AddStudent", 
          data: $.toJSON(myjson) 
         }); 
        }, 
        "Cancel": function() { 
         $(this).dialog('close'); 
        } 
       } 
      }); 
     return false; 
    }); 

}); 

、これは彼らがあなたのWebメソッドのパラメータに一致するように、あなたのJSONオブジェクトのプロパティの順序を変更してみてください私のWebメソッド

 [WebMethod] 
     public static void AddStudent(string birthday,string name,string gender,string courseId) 
     { 
     var repository = new StudentRepository(); 
     var student = new Student 
          { 
           Birthday = Convert.ToDateTime(birthday), 
           Name = name, 
           Gender = gender, 
           Course_ID = Convert.ToInt32(courseId) 
          }; 
     repository.InsertStudent(student); 
      repository.Save(); 
     } 
+0

data: JSON.stringify(myjson) 

の代わりに役職。"あなたはそれよりはるかに良い、多くのことをする必要があります。 –

+3

ガンダーとは何ですか? – stark

+0

ちょうど好奇心から、何があなたのエラーを引き起こしていたか、それをどう修正しましたか? – gowansg

答えて

0

です。

var myjson = { 
     birthday: jbirthday, //now the properties match the parameters 
     name: jname, 
     gender: jgender, 
     courseId: jcourseId 
    }; 

    public static void AddStudent(string birthday, string name, string gender, 
     string courseId) 
    { ... } 

私は、ASP.NETは、すべてのパラメータが文字列型であっても、自分の非直列化されたJSONオブジェクトに一致するメソッドのシグネチャを見つけることができないので、あなたが500エラーを見ていると思います。

更新

私はもともと提案何であるかをテストする機会を持っていた、とプロパティの順序は重要ではありませんでした。

ないときは、このいずれかを助けたが、私は500エラーを見たかどうかわから:私のJSONオブジェクトの

  • 性質が私のWebMethod属性のすべてのパラメータ

    var myjson = {b: 'test1', c: 'test' }; 
    
    [System.Web.Services.WebMethod] 
    public static void TestMethod(string a, string b) 
    { 
        //does nothing. 
    } 
    
  • と一致しませんでした私が渡していたパラメータの一つは定義されていませんでした。

    var myjson = {a: undefined, b: 'test' }; 
    
    [System.Web.Services.WebMethod] 
    public static void TestMethod(string a, string b) 
    { 
        //does nothing. 
    } 
    
+1

また、jgenderは定義されておらず、jganderだけを定義しています。 – Ramesh

0

この試してみてください。 "いくつか間違ったこと" と "それが動作していないが、" 私は「の記述を呼びたいものをほとんどありません

data: $.toJSON(myjson) 
関連する問題