Je fais un appel AJAX en utilisant jQuery à une méthode de contrôle .ascx dans le code derrière pour obtenir une liste d'objets métier:jQuery Ajax pour ASP.NET .ascx contrôle
C# Code:
if (Request.Headers["X-OFFICIAL-REQUEST"] == "TRUE") ReturnList(Request.Params[1]);
protected void ReturnList(string param)
{
Response.Write(GetBusinesses(param));
Response.Flush();
try {
Response.Close();
}
catch { }
Response.End();
return;
}
private string GetBusinesses(string classificationName)
{
System.Web.Script.Serialization.JavaScriptSerializer jSearializer = null;
if (!string.IsNullOrEmpty(classificationName))
{
dSourse = BusinessesDBService.Instance.GetLatestListingsUpdates(classificationName).ToList();
jSearializer = new System.Web.Script.Serialization.JavaScriptSerializer();
}
return jSearializer.Serialize(dSourse);
}
jQuery code:
window.jQuery.ajax({
type: "POST",
async: false,
url: location.href,
dataType: "json",
data: ({ 'FUNCTION': 'ReturnList', 'param0': classificationName.toLowerCase() }),
success: function (data) {
data = eval(data);
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
},
beforeSend: function (xhr) {
xhr.setRequestHeader("X-OFFICIAL-REQUEST", "TRUE"); //Used to ID as a AJAX Request
},
complete: function (XMLHttpRequest, textStatus) {
//build HTML
var tablestring = '<table ><tr><td>UsreID" + "</td><td>UserName</td></tr>';
for (var i = 0, len = data.length; i < len; ++i) {
tablestring = tablestring + "<tr>";
tablestring = tablestring + "<td>" +
data[i].BusinessID + "</td>";
tablestring = tablestring + "<td>" +
data[i].BusinessName + "</td>";
tablestring = tablestring + "</tr>";
}
tablestring = tablestring + "</table>";
var divResult = document.getElementById("divAjax");
divResult.innerHTML = tablestring;
}
});
l'appel http est exécuté fin et la collection est Seri alisé et retourné avec la réponse mais j'ai quelques problèmes ici. Le principal est que le HTML n'est pas créé - je ne suis pas capable de capturer la chaîne renvoyée. La chaîne ci-dessous apparaît dans la fenêtre de script Firebug une fois l'appel terminé
[{"BusinessID": 6549, "BusinessName": "Magasin d'ivoire", "IsMain": true}, {"BusinessID": 16565, "BusinessName": "Classic Nails", "IsMain"}, {"BusinessID": 5877, "BusinessName": "Visible Changes cheveux", "IsMain": true}]
Également dans le Firebug j'ai remarqué que chaîne dans l'objet de réponse XMLHttpRequest et le message d'erreur est "JSON n'est pas valide" Toutes les suggetions? Merci beaucoup.
Si vous avez éprouvé des difficultés de JSON invalide et ne peut pas trouver le problème, je vous suggère d'utiliser un validateur comme [JSONLint] (http://jsonlint.com/). –