Tengo problemas para obtener el contenido del objeto JSON de una llamada JQery.ajax. Mi llamada:
$('#Search').click(function () { var query = $('#query').valueOf(); $.ajax({ url: '/Products/Search', type: "POST", data: query, dataType: 'application/json; charset=utf-8', success: function (data) { alert(data); for (var x = 0; x < data.length; x++) { content = data[x].Id; content += "<br>"; content += data[x].Name; content += "<br>"; $(content).appendTo("#ProductList"); // updateListing(data[x]); } } }); });Parece que el objeto JSON se devuelve correctamente porque "alerta (datos)" muestra lo siguiente
[{"Id": "1", "Name": "Shirt"}, {"Id": "2", "Name":"Pants"}]pero cuando trato de mostrar la identificación o el nombre en la página usando:
content = data[x].Id; content += "<br>"; content += data[x].Name; content += "<br>";devuelve "indefinido" a la página. ¿Qué estoy haciendo mal?
Gracias por la ayuda.
Los datos regresan como la representación de cadena del JSON y no los vuelve a convertir en un objeto de JavaScript. Establezca el tipo de datos en solo ' dataType 'json' para que se convierta automáticamente.
Te recomiendo que uses:
var returnedData = JSON.parse(response);para convertir la cadena JSON (si es solo texto) en un objeto JavaScript.
Funciona bien, Ej:
$.ajax({ url: "http://localhost:11141/Search/BasicSearchContent?ContentTitle=" + "تهران", type: 'GET', cache: false, success: function(result) { // alert(jQuery.dataType); if (result) { // var dd = JSON.parse(result); alert(result[0].Id) } }, error: function() { alert("No"); } });Finalmente, necesita usar esta declaración ...
result[0].Whatever