2014-10-09 2 views
-1

Первый прослушиватель событий отлично работает. Когда запускается второй прослушиватель событий, я могу видеть POST в Firebug и возврате, но alert('test') никогда не произойдет.Код не работает после завершения вызова AJAX

$('.walkthrough').click(function(){ 
    var url = $(this).data('story'); 
    var num = $(this).data('revert'); 
    $('#tableauViz').replaceWith('<div id="tableauViz"></div>') 
    $.post('',{method: 'getTicket', url: url},function(data){ 
     switchToStory(url,data); 
     $('#help').html('<p>You are currently viewing the walkthrough, click here to <a href="#" data-num="'+num+'" class="exitWalkthrough">go back</a>.</p>'); 
    }); 
}); 
$('#addViz').click(function(){ 
    var url = $('#Viz-URL').val(); 
    var name = $('#Viz-Name').val(); 
    var expression = /[[email protected]:%_\+.~#?&//=]{2,256}\.[a-z]{2,4}\b(\/[[email protected]:%_\+.~#?&//=]*)?/gi; 
    var regex = new RegExp(expression); 
    if(url.match(regex) && name != ''){ 
     url = url.replace('http://','').replace('https://',''); 
     console.log(url); 
     $.post('',{ 
      user_key:'5', 
      method: 'addViz', 
      url:url, 
      name:name 
     },function(data){ 
      alert('test'); 
     },'json'); 
    } else { 
     alert("Please enter a valid URL and Name"); 
    } 
}); 

Кто-нибудь видит что-нибудь там, что могло бы предотвратить это? Как я могу отладить эту проблему?

+2

этот обратный вызов является * успешным * обратным вызовом. Если успех не происходит, ошибка должна произойти. Добавьте обратный вызов ошибки, чтобы увидеть причину его отказа. '}, 'json'). fail (function (xhr, status, reason) {console.log (status, reason);})' –

+0

Не должно ли оно отображаться как ошибка в Firebug? – Leeish

+0

Нет, не следует. Нет, если это ошибка HTTP. –

ответ

0

При выполнении запросов Ajax, это всегда хорошая идея, чтобы обеспечить обратный вызов ошибки, даже если вы не думаете, что он когда-либо будет вызван. Без этого у вас нет способа диагностировать проблему, которая не связана с сетью.

Все методы jQuery ajax (кроме .load) возвращают объект обещания jQuery, который сделал, завершил неудачу и всегда методы. Используйте метод fail для обнаружения сбоев.

$.post(url, data, successHandler).fail(function (xhr, status, reason) { 
    console.log(
     xhr, // this is an object, it will contain the response text, headers, etc 
     status, // the http status of the response, 20x or 30x for success 
     reason // this is the reason that the response failed 
    ); 
}); 

В вашем случае это не удалось, поскольку пустая строка недействительна json.

-2

Вам нужно удалить первую пустую ARG «» из вашей .post, othervise URL-адрес будет перезаписан с пустой строкой .:

$.post({ 
    user_key:'5', 
    method: 'addViz', 
    url:url, 
    name:name 
},function(data){ 
    alert('test'); 
},'json'); 
+0

Post работает нормально, это возвращение. Кевин ударил его. – Leeish

+0

Я получил это, но в любом случае, если ваш первый аргумент i $ .post является пустой строкой, он переопределит параметр url, и вы будете отправлять данные в '. – Beckafly

+1

False. Он отправляет это себе. Я буквально делаю это сейчас, и все работает нормально. – Leeish

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