J'essaie de sauvegarder les données du tableau HTML dans la base de données en utilisant jquery pour appeler une méthode page. Cependant, l'appel de jquery échoue avec: 500 erreur de serveur interne. Un conseil?Echec de l'appel jquery de la méthode page
est Ci-dessous le code:
SCRIPT:
$(document).ready(function() {
$("#save").click(function(event) {
var i = 0;
var inputs = new Array();
$("#tbNames").find("input").each(function() {
inputs[i] = [this.id, this.value];
i++;
});
var columnsCount = 2;
$.ajax({
type: "POST",
url: "Default2.aspx/Save",
contentType: "application/json; charset=utf-8",
data: "{inputs: inputs, columnsCount: columnsCount}",
dataType: "json",
success: AjaxSucceeded,
error: AjaxFailed
});
});
function AjaxSucceeded(result) {
alert(result.d);
}
function AjaxFailed(result) {
alert(result.status + ' ' + result.statusText);
}
});
</script>
HTML:
Nom Tâche Supprimer
<input id="save" type="button" value="Save data" />
et C# code de la méthode de la page:
[WebMethod()]
public static List<Hashtable> ParseJson(string[] array, int rowsCount)
{
var result = new List<Hashtable>();
List<string[]> list = new List<string[]>();
foreach (var item in array)
{
int comma = item.IndexOf(',');
list.Add(new string[] { item.Substring(0, comma), item.Substring(comma + 1) });
}
int i = 0;
while (i < list.Count)
{
var dict = new Hashtable();
int j = i + rowsCount;
for (; i < j; i++)
{
dict.Add(list[i][0], list[i][1]);
}
result.Add(dict);
}
return result;
}
[WebMethod()]
public static string Save(string[] inputs, int columnsCount)
{
List<Hashtable> r = ParseJson(inputs, columnsCount);
List<TestClass> listOfTasks = new List<TestClass>();
foreach (var item in r)
{
TestClass tc = new TestClass();
tc.name = (string)item["name"];
tc.task = (string)item["task"];
listOfTasks.Add(tc);
}
DBManager dbm = new DBManager();
string actionResult = dbm.SaveData(listOfTasks);
if (actionResult == String.Empty)
{
return "Saved!";
}
else
{
return actionResult;
}
}
Le point d'arrêt de la fonction C# Save() n'a pas été atteint. Donc, il semble que une méthode d'appel à la page est un échec. Sur la même page je mets un bouton 'hello world' qui appelle aussi la méthode page et ça marche bien. L'erreur se produit dans le: .ajax $ ({type: "POST", url: "Default2.aspx/Save", contentType: "application/JSON; charset = utf-8", les données: « { inputs: inputs, columnsCount: columnsCount} ", dataType:" json ", succès: AjaxSucceeded, erreur: AjaxFailed}); – Neno