2013-11-15 8 views
0

Я искал и видел, как многие задавали похожие вопросы, но никто из них не ответил/не помог мне.ajax call reloading page и не вызывающая функция обратного вызова

Ниже приведен код js, который я использую для вызова ajax. Сообщение работает, когда я иду через код с помощью firebug, я могу увидеть ответное сообщение в ответе. Но функция обратного вызова не вызывается. Линия тестирования запускается, и страница перезагружается. Что мне недостает, чтобы вернуть функцию обратного вызова, и страница не обновляется? также смотря в firebug, я могу видеть под этим.xmlhttp: onreadystatechange = callback();

Вот код:

function testajax() { 
    params = 'action=testing'; 
    if (window.XMLHttpRequest) { 
     // code for IE7+, Firefox, Chrome, Opera, Safari 
     xmlhttp = new XMLHttpRequest(); 
    } else { // code for IE6, IE5 
     xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); 
    } 
    xmlhttp.open("POST", "afs_controller", true); 
    xmlhttp.onreadystatechange = callBack; 
    xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 
    xmlhttp.setRequestHeader("Content-length", params.length); 
    xmlhttp.setRequestHeader("Connection", "close"); 
    xmlhttp.send(params); 
    //just test line; 
    msg = 'testing;'; 
} 

function callBack() { 
    if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { 
     handleReturn(xmlhttp.responseText); 
    } else { 
     failedCallBack(xmlhttp.responseText); 
    } 
} 

function handleReturn(responseText) { 
    document.getElementByID(displayDiv).innerHTML = responseText; 
    document.getElementByID(displayDiv).style.display = 'block'; 
} 

function failedCallBack(responseText) { 
    var msg; 
    msg = responseText; 
    msg = msg + ' here'; 
    //handle here; 
} 
+3

Вы должны действительно изучить эту разницу между Java и JavaScript. java не javascript, а javascript не java –

ответ

0

Нет, были в моем посте я упомянуть JAVA, весь код показан JavaScript.

Я не размещал код JAVA, не нужно. Я получаю ответ обратно в порядке. Используя firebug, я вижу, что были изменения readystate после send() и могут видеть возвращенный текст в консоли firebug.

Не знаете, почему вы в замешательстве. Возможно, вам стоит перечитать сообщение.

+0

Если у вас есть комментарии к замечаниям другого пользователя, вы должны оставить комментарий, а не ответ. Ответы зарезервированы для решения проблемы. Просто полезный совет! :) –

+0

Я новичок здесь и не был зарегистрирован, не видел места, чтобы добавить комментарий. Я знаю сейчас: o) – user2998147

0

Создал fiddle который работает нормально. Так что не уверен, что пойдет не так на вашей стороне.

Другое дело: попытаться определить переменную перед использованием затем:

function testajax() { 
    var params = 'action=testing'; 
    var xmlhttp; 
    if (window.XMLHttpRequest) { 
     // code for IE7+, Firefox, Chrome, Opera, Safari 
     xmlhttp = new XMLHttpRequest(); 
    } else { // code for IE6, IE5 
     xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); 
    } 
    xmlhttp.open("POST", "/echo/json", true); 
    xmlhttp.onreadystatechange = callBack; 
    xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 
    xmlhttp.setRequestHeader("Content-length", params.length); 
    xmlhttp.setRequestHeader("Connection", "close"); 
    xmlhttp.send(params); 
} 

отличный пример страницы для XMLHttpRequest: http://www.openjs.com/articles/ajax_xmlhttp_using_post.php

Просто спрашиваю: почему бы не использовать jQuery?

Пример:

$.ajax({ 
    type: 'POST', 
    url: 'afs_controller', 
    data: { 
     'action': 'testing' 
    }, 
    success: handleReturn, 
    error: failedCallBack 
}); 
+0

Обычно я пытаюсь определить vars, но просто делал быстрый код для тестирования, поэтому был неряшлив с ними, вот почему некоторые из них и некоторые нет. Раньше я не использовал jQuery, но я смотрю на него. Спасибо за ссылку. – user2998147

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