Почему мой Jquery AJAX не может выполнить некоторые методы после успеха? - PullRequest
0 голосов
/ 14 января 2012

Я сделал форму для вставки нового статуса в базу данных. Мой сценарий, использующий метод постов jquery AJAX для выполнения работы, чтобы не нужно было перезагружать страницу. Затем, после завершения метода, он вызовет еще два ajax-метода, чтобы обновить временную шкалу моего приложения (эти два метода выполняют PHP-скрипт, который вызывает Twitter API, а затем обновляют временную шкалу на моей странице). Метод update_status выполнен успешно, но ему не удалось выполнить еще два метода. Любой совет, ребята? Я очень ценю ваши отзывы.

это мой код:

$(document).ready(function(){

    $(function() {  
        $("#update_status_btn").click(function() { 
           var user_id = $("#update_status #user_id").val(); 
           var status = $("#update_status #status").val();
           var dataString = 'user_id='+ user_id + '&status=' + status;

               update_status('profile/update_status', dataString);
           return false;
               });  
    }); 




});

function update_status(method_url, dataString)
{
        $.ajax({
          type: 'POST',
          url: method_url,
          data: dataString,
          cache: false,
          success: function() {
              //the following methods won't executed :-(
                update_timeline('profile/get_user_timeline', '#user_timeline ul'); 
                update_timeline('profile/get_home_timeline', '#home_timeline ul');
          }
        });
}

function update_timeline(method_url, target)
{
        //get home timeline
        $.ajax({
          type: 'GET',
          url: method_url,
          dataType: 'json',
          cache: false,
          success: function(result) {
            $(target).empty();
            for(i=0;i<result.length;i++){
                $(target).append('<li><article><img src="'+ result[i]['user']['profile_image_url'] +'"><a href="">'+ result[i]['user']['screen_name'] + '</a>'+ linkify(result[i]['text']) +'</li></article>');
            }
          }
        });
}


function linkify(data)
{
    var param = data.replace(/(^|\s)@(\w+)/g, '$1@<a href="http://www.twitter.com/$2" target="_blank">$2</a>');
    var param2 = param.replace(/(^|\s)#(\w+)/g, '$1#<a href="http://search.twitter.com/search?q=%23$2" target="_blank">$2</a>');
    return param2;      
}

1 Ответ

0 голосов
/ 14 января 2012

я представляю, что result[i]['user'] в update_timeline вызывает проблему - возможно, нулевое значение.Вы используете отладчик JavaScript?это должно показать вам, каково значение объекта результата.

Вы также можете определить обратный вызов ошибки для ваших методов ajax, проверить responseText объекта jqXhr (jquery http xml request) - он содержит полученный ответс сервера.Очевидно, вы ожидаете объект json, но если произошла ошибка сервера, возможно, вы получаете HTML, с которым jquery не знает, что делать.

$.ajax({
 type: 'Post'
 url: method_url,
  data: dataString,
 cache: false,
 success: function() {},
 error: function (jqHxr, statusText) {
   //jqXhr.responseText holds the response sent from the server
                }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...