Deseo crear un objeto en el lado del cliente de la página aspx. Y quiero agregar funciones a estas clases de JavaScript para facilitar la vida.Envío de un objeto JSON a un servicio web ASP.NET mediante la función JQUERY ajax
En realidad puedo obtener y usar los objetos (derivados de las clases del lado del servidor) que devuelve de los servicios. Cuando quería enviar objetos desde el cliente mediante métodos jquery ajax, yo no podría hacerlo :)
Ésta es mi clase de javascript:
function ClassAndMark(_mark, _lesson){
this.Lesson = _lesson;
this.Mark = _mark;
}
function Student(_name, _surname, _classAndMark){
this.Name = _name;
this.SurName = _surname;
this.ClassAndMark = _classAndMark;
}
y esto es un método para la clase del estudiante para llamar Web servicio:
JSClass.prototype.fSaveToDB(){
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: "/WS/SaveObject.asmx/fSaveToDB"),
data: ????????????,
// This might be: JSON.stringify(this) ?
// Web service method has a parameter, name is _obj
// if i don't send data with parameter, i'm getting this error:
// Invalid web service call, missing value for parameter: '_obj'
//
// Should i send it like that:
// data: "{_obj:" + JSON.stringify(this) + "}"
//
// I tried to wrap this with parameter like that:
// data: JSON.stringify("{_obj:" + this + "}")
//
// But i got this error:
// Cannot convert object of type 'System.String' to type 'System.Collections.Generic.IDictionary`2[System.String,System.Object]'
dataType: "json"
});
}
cree Javascript objeto y llamar a su método para enviarla hacia el servicio web:
en realidad yo no sé lo que debería ser la definición de las clases y método s en el lado del servidor, pero creo que:
class ClassAndMark{
public string Lesson ;
public string Mark ;
}
class Student{
public string Name ;
public string SurName ;
public ClassAndMark classAndMark ;
}
servicio Web está por debajo pero una vez más no pude conseguir lo que debería ser en lugar de la ???? :
[WebMethod()]
public Student fSaveToDB(???? _obj)
{
// How can i convert input parameter/parameters
// of method in the server side object?
// SQL operations
// srting QInsert = "INSERT INTO tableName (......) VALUES (.....)";
// ...
// ..
// .
return new Student{
Name = ???, // deserialize _obj and pass its Name value
SurName = ???, // deserialize _obj and pass its SurName value
classAndMark = ???, // deserialize _obj and pass its classAndMark value
};
}
esto no funciona "data: JSON.stringify (myObj)" porque el método del servicio web tiene el nombre del parámetro y está dando un error como "no me llamaste con este parámetro" ... – uzay95
Has intentado envuelva su objeto como lo escribí en la última línea? Me gusta esto: data: JSON.stringify ({paramName: myObj}) – mamoo
Intenté y obtuve este error: No puedo convertir el objeto del tipo 'System.String' para escribir 'System.Collections.Generic.IDictionary'2 [System.String , System.Object] ' ¿Tiene alguna idea? Y gracias por sus ayuda ... – uzay95