2013-05-02 4 views
0

Я не могу, чтобы жизнь меня определяла, почему мои данные возвращаются пустым. В стельке я вижу JSONjquery ajax не возвращает данные об успехе C# asp.net

d=[{"response":[{"h":"h1"},{"h":"h1"}] }] 

в стельке есть 200 состояния на строке, где я видеть JSON, но никаких других строк после того, что один (может быть, его не возвращался?). Это код, я использую

$('.SomeLink').click(function() { 
    var sfn = $('#ID1').val(); 
    var sfp = $('#ID2').val(); 
    var sfi = $('#ID3').val(); 
    var gid = $('#ID4').val(); 
    $.ajax({ 
     type: "POST", 
     cache: false, 
     url: '/AjaxHandler.aspx/GetNewHtml', 
     contentType: "application/json; charset=utf-8", 
     data: "{'a':'" + sfn + "','b':'" + sfp + "','c':'" + gid + "','d':'" + sfi + "'}", 
     dataType: "json", 
     success: function (data) { 
      alert(data.response[0].h); //acts like a syntax error/no alert box 
      alert(data); // [object Object] 
      alert(data.response); // undefined 
      alert(data.response.count); //acts like a syntax error/no alert box 
     }, 
     error: function (e) { 
      alert("Error: " + e.responseText); 
     } 
    }); 
}); 

AjaxHandler.aspx

[System.Web.Services.WebMethod()] 
public static string GetNewHtml(string a, string b, string c, string d) 
{ 
    List<Samp> samp = new List<Samp>() 
    { 
     new Samp{h = "h1"}, 
     new Samp{h = "h1"} 
    }; 
    return Serialize(new { response = samp }); 
} 
private static string Serialize(object obj) 
{ 
    JavaScriptSerializer serializer = new JavaScriptSerializer(); 
    return serializer.Serialize(obj); 
} 

SAMP Класс

public class Samp 
{ 
    public string h = ""; 
} 

Это мой первый раз, используя JQuery Ajax с asp.net, так я уверен, IM недостающие то, что, вероятно, относительно просто. Im использованием .Net 4.0, JQuery 1.7.1, Iis 7,5

+1

Вы пробовали проверки объекта в хроме или поджигатель и посмотреть, что на самом деле внутри объекта данных? –

+0

Попробуйте использовать FireFox (с FireBug) или Chrome и с помощью 'console.log (data)' в вашем обработчике успеха, чтобы вывести объект на консоль отладки, что даст вам лучшее представление о том, как оно выходит. – Corey

+0

в вашей 'success: function (data) {' do 'console.log (data);' и посмотреть, что в консоли. –

ответ

3

Try data.d для возврата объекта:

alert(data.d); 
+0

ooooh Я не могу вспомнить, но это было давно в asp.net, где меня научили захватывать данные, потому что jQuery хранил его по умолчанию в 'data.d' ... но это еще предстоит увидеть на этом этапе , –

+0

да, это меня несколько раз :) – AaronS

+0

Theres мои данные !!! Благодарю вас, спасибо, это то, о чем я не забуду, на какое-то время;) – hijinxbassist

0

его спотыкаясь кавычки вокруг имен свойств. попробуйте индексы строк. попробовать

data["response"][0]["h"]

возвращает h1

+0

Запись 'data [" response "]' в JavaScript фактически идентична записи 'data.response'. – Corey

+0

просто протестировал его, действует как синтаксическая ошибка без предупреждения. Работает data.d. – hijinxbassist

+0

ok хорошо звучит. Я отошел от его комментария, где его результаты были {«response»: [{"h": "h1"}, {"h": "h1"}]} ... JSON.parse (thatString) работал для me ... – bluetoft

Смежные вопросы