2010-11-15 2 views
0

Я пытаюсь использовать jQuery ajax для получения некоторых значений из базы данных, а затем возвращать их в массив.jQuery ajax - пустой ответ возвращается

Я использовал тот же код несколько раз раньше, но на этот раз ответа не возвращается. Хотя значения post - это правильные значения, которые я ожидал бы. Вот Javascript код, который я использую:

$.ajax({ url: '/BlogArchive.asmx/ChangePost' 
        , type: 'POST' 
        , contentType: 'application/json; charset=utf-8' 
        , data: '{FileName:"' + FileName + '"}' 
        , dataType: 'json' 
        , success: function (data) 
        { 
         var arrayList = data.d; 

         var BlogPostTitle = $(".BlogPostTitle")[0]; 
         var BlogPostDate = $(".BlogPostDate")[0]; 
         var BlogPostContent = $(".BlogPostContent")[0]; 

         $(BlogPostTitle).html(arrayList[0]); 
         $(BlogPostDate).html(arrayList[1]); 
         $(BlogPostContent).html(arrayList[2]); 

        } 
//     , error: function (XMLHttpRequest, textStatus, errorThrown) 
//     { 
//      //There was an error 
//      alert('dfd'); 
//     } 
      }); 

Единственный Javascript ошибка, я получаю то, что данные нуль, которые я бы ожидать, как ответ будет пустым.

Похоже, что имя веб-метода, которое я вызываю из моего javascript, даже не читается, потому что, если я изменил «ChangePost» на «ChangePost1», например, он все равно возвращает пустой ответ, хотя я бы ожидать сообщение об ошибке, указывающее, что веб-метод не найден.

Похоже, что он признает, что существует веб-служба BlogArchive.asmx, потому что, если я помещу что-то, что создаст ошибку в коде VB, ошибка появится как ответ.

Я уверен, что это должно быть что-то простое, что я делаю неправильно. Любая помощь будет оценена по достоинству.

+0

Есть ли причина, по которой вы устанавливаете переменные POST [атрибут данных] в строку JSON, а не только объект JSON? –

+1

@bradchristie - http://encosia.com/2008/06/05/3-mistakes-to-avoid-when-using-jquery-with-aspnet-ajax/ – jball

ответ

0
, data: '{FileName:"' + FileName + '"}' 

Кажется нечетным. Вы, вероятно, имел в виду:

, data: {FileName: FileName} 

(или 'FileName=' + FileName)

Кроме того, вы проверить запрос (и ответ) через FireBug или подобное?

+0

Да, используйте firebug! это сэкономит вам огромное количество времени на устранение таких проблем! +1 –

+0

Смотрите «JSON, объекты и строки: о мой!» в разделе [blog post] (http://encosia.com/2008/06/05/3-mistakes-to-avoid-when-using-jquery-with-aspnet-ajax/), чтобы понять, почему строковый литерал требуется с asp.Net – jball

+0

Спасибо за ваш ответ. Я попытался изменить строку «данные» на предложенные вами способы, но я все равно получаю тот же пустой ответ. Кроме того, да, я использую FireBug - вот где я заметил, что ответ был пуст. На вкладке «Почта» я вижу, что значения также отправляются правильно. – Leah

0

Вы должны попробовать использовать jQuery getJSON с минимальными аргументами.

Другое дело, когда вы используете JSON с JQuery, если данные ответа не wellformed (как пространство перед/после стартового строки JSON) может привести к пустой ответ от JQuery.

Обязательно используйте традиционный AJAX с jQuery, чтобы ваши ответные данные были правильными.

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