2014-01-20 3 views
-5

ниже моя функция на основном коде page.this отлично работает в IE, пожалуйста, проверьте, где я делаю ошибкуAjax не работает в Chrome, Firefox и Opera

я просто хочу, чтобы передать значение Аякса странице как вы видите мою ссылку выше.

function showUser2(str2) 
    { 

    if (str2=="") 
    { 
    document.getElementById("txtHint").innerHTML=""; 
    return; 
    } 
if (window.XMLHttpRequest) 
    { 
    xmlhttp=new XMLHttpRequest(); 
    } 
    else 
    { 
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
    } 
    xmlhttp.onreadystatechange=function() 
    { 
    if (xmlhttp.readyState==4 && xmlhttp.status==200) 
     { 
     document.getElementById("txtHint").innerHTML=xmlhttp.responseText; 
     } 
    } 

var drdownValue = document.getElementsByName('shorting').item(0).value; 
var buttonValue1 = document.getElementsByName('buttonpassvalue1').item(0).value; 

    var value = parseInt(document.getElementById('count').value, 10); 
    value = isNaN(value) ? 0 : value; 
    value++; 
    document.getElementById('count').value = value; 

var val123 = document.getElementById('count').value.trim();  
var gotnumber = document.getElementById('getpagevalue').value.trim();  

    if(val123 > gotnumber){ 
     buttonpassvalue1.setAttribute("disabled","disabled"); 
     buttonpassvalue.removeAttribute("disabled"); 

    } else{ 
     buttonpassvalue.removeAttribute("disabled"); 
     buttonpassvalue1.removeAttribute("disabled"); 
    } 

alert(drdownValue);// to check click and value 
alert(buttonValue1);// to check click and value 

xmlhttp.open("GET", "productlistajax.php?q=" + drdownValue + "&version1=" + buttonValue1, true); 

xmlhttp.send(); 
    } 

кнопка HTML код

<button class="button" type="button" name="buttonpassvalue1" value="1" onclick="showUser2(this.value)">Next >> </button> 

этот код отлично работает в IE, пожалуйста, проверьте, где я делаю ошибку, которую

я просто хочу, чтобы передать значение Аякса странице, как вы можете увидеть мою ссылку выше.

благодаря

+0

Почему бы вам не поставить точку останова и отладить ее? также jquery был бы хорошим выбором, если вы можете использовать его в своем проекте ... –

+0

raw ajax заставляет меня плакать, считается jquery? Конечно, jquery заставляет других плакать. –

+0

Я читал где-то это может быть из-за кнопки не внутри формы ... у меня нет формы для кнопки выше ... но все еще работает в IE –

ответ

1

Я рекомендую использовать jQuery или другую инфраструктуру, которая всегда будет знать обо всех конкретных браузерах.

Если вы предпочитаете использовать собственный код, вам понадобится дополнительный код. Во-первых, не полагайтесь только на ActiveXObject("Microsoft.XMLHTTP"); и XMLHttpRequest, которые, вероятно, не всегда будут доступны. вместо этого использовать:

function GetXmlHttpObject(){ 
var xmlHttp=null; 
try 
    { 
    // Firefox, Opera 8.0+, Safari 
    xmlHttp=new XMLHttpRequest(); 
    } 
catch (e) 
    { 
    // Internet Explorer 
    try 
    { 
    xmlHttp=new ActiveXObject("Msxml2.XMLHTTP"); 
    } 
    catch (e) 
    { 
    xmlHttp=new ActiveXObject("Microsoft.XMLHTTP"); 
    } 
    } 
return xmlHttp; 
} 

var xmlhttp=GetXmlHttpObject(); 

тогда вы определяете функцию обратного вызова:

xmlhttp.onreadystatechange=function() 
    { 
    if (xmlhttp.readyState==4 && xmlhttp.status==200) 
     { 
     document.getElementById("txtHint").innerHTML=xmlhttp.responseText; 
     } 
    } 

и отправить его, но я бы включать случайную переменную в URL, чтобы убедиться, что браузер ничего не кэширует

xmlHttp.open("GET",url+"&sid="+Math.random(),true); 
xmlHttp.send(null); 

в любом случае, вероятно, ваша проблема не имеет ничего общего с самим AJAX, и, возможно, есть что-то еще в вашем коде causi все, чтобы рухнуть.

Например, взгляните на консоль хром и убедитесь, что в журнале ошибок будет содержаться полезная информация. если вы не знаете, как это сделать, здесь у вас есть guide

0

Во-первых, я очистил ваш код немного:

function showUser2(str2){ 

    if (str2==""){ 
    document.getElementById("txtHint").innerHTML=""; 
    return; 
    } 

    if (window.XMLHttpRequest) xmlhttp=new XMLHttpRequest(); 
    else xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 

    xmlhttp.open("GET", "productlistajax.php?q=" + drdownValue + "&version1=" + buttonValue1, true); 

    xmlhttp.onreadystatechange=function(){ 
    if (xmlhttp.readyState==4 && xmlhttp.status==200){ 
     document.getElementById("txtHint").innerHTML=xmlhttp.responseText; 
     } 
    } 

    var drdownValue = document.getElementsByName('shorting').item(0).value; 
    var buttonValue1 = document.getElementsByName('buttonpassvalue1').item(0).value; 

    var value = parseInt(document.getElementById('count').value, 10); 
    value = isNaN(value) ? 0 : value; 
    value++; 
    document.getElementById('count').value = value; 

    var val123 = document.getElementById('count').value.trim();  
    var gotnumber = document.getElementById('getpagevalue').value.trim();  

    if(val123 > gotnumber){ 
     buttonpassvalue1.setAttribute("disabled","disabled"); 
     buttonpassvalue.removeAttribute("disabled"); 

    }else{ 
     buttonpassvalue.removeAttribute("disabled"); 
     buttonpassvalue1.removeAttribute("disabled"); 
    } 

    alert(drdownValue);// to check click and value 
    alert(buttonValue1);// to check click and value 


    xmlhttp.send(); 
} 

Обратите внимание, что я переехал xmlHttp.open перед xmlHttp.onreadystatechange.

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

jQuery в вашем случае сохранит только несколько строк кода. Вы можете написать компактный, надежный и удобный JavaScript-код. Я подписал StackOverflow специально, чтобы поделиться своими знаниями об простом JavaScript.

0

Chrome, Firefox, & Opera не поддерживает объекты Microsoft. Вы используете

xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 

В хроме, эта линия дает мне эту ошибку:

ReferenceError: ActiveXObject is not defined

Вы должны получить данные совместимым способом кросс-браузер.Это может быть использование jQuery или простой Javascript

+0

Я не считаю, что это проблема, она проверяет, поддерживается ли поддержка XMLHttpRequest, а если нет, возвращается к 'Microsoft.XMLHTTP'. К счастью для меня, мне не пришлось поддерживать IE в последнее время, но это было стандартным способом, отличным от jQuery, чтобы сделать это. – Basic

+0

@Basic да, вы правы. Я не собирал все вместе правильно – jasonscript

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