Что не так с этим кодом Ajax

-4

Этот javascript-код запускается без проблем в chrome и IE, но у него есть проблема в firefox, мне нужно знать, что неправильно?

    <script>
function checkGurantee() {
var gurantee = document.getElementById('gurantee_no').value;
if (gurantee === '') {
document.getElementById('info').innerHTML = '';
return;
}
var params = "gurantee_no=" + gurantee;
request = new ajaxRequest();
request.open("POST", "check_gurantee.php", true);
request.setRequestHeader("Content-type","application/x-www-form-urlencoded");
request.setRequestHeader("Content-length", params.length);
request.setRequestHeader("Connection", "close");
request.onreadystatechange = function() {
if (this.readyState === 4) {
if (this.status === 200) {
if (this.responseText != null) {
document.getElementById('info').innerHTML = this.responseText;
}
else alert("Ajax error: No data received");
}
else alert( "Ajax error: " + this.statusText);
}
}
request.send(params);
}
function ajaxRequest() {
try{
var request = new XMLHttpRequest();
}
catch(e1) {
try{
request = new ActiveXObject("Msxml2.XMLHTTP");
}
catch(e2) {
try{
request = new ActiveXObject("Microsoft.XMLHTTP");
}
catch(e3) {
request = false;
}
}
}
return request;
}
</script>

И это часть HTML:

    <section class="form">
<form action="javascript:void()" method="POST" class="formstyle1">
    <label for="gurantee">لطفاً شماره گارانتی را وارد نمایید:</label><br />
    <input type="text" name="gurantee_no" id="gurantee_no" class="textfield" />
    <input type="button" value="جستجو" class="btn" onClick="checkGurantee()" />
    <span id='info'></span>
</form>         
        </section>
  • 0
    Любые ошибки в консоли?
  • 0
    что вы подразумеваете под "но есть проблемы в Firefox и IE", у вас есть синтаксическая ошибка? ошибка выполнения? безопасность ? пожалуйста, дайте как можно больше подробностей.
Показать ещё 2 комментария
Теги:
internet-explorer

4 ответа

1
Лучший ответ

если ваша проверка неверна, это должно быть

if (gurantee == '')
{
document.getElementById('info').innerHTML = ''
return
}
  • 0
    Спасибо, чувак, проблема с IE решена, но также была проблема с Firefox !!!!
  • 0
    Эта проблема решена успешно, tnxX
0

Я думаю, что было бы проще использовать jQuery для этой цели... С jQuery ваш код будет выглядеть так:

<script type="text/javascript">
    $(function() {
        $('form').bind('submit', function(event) {
            var form = $(this),
                data = form.serializeArray();

            $.post(form.attr('action'), data, function(request) {
                $('#info').html(request);
            });
            return false;
        });
    });
</script>

И ваш section:

<section class="form">
    <form action="check_gurantee.php" class="formstyle1">
        <label for="gurantee">لطفاً شماره گارانتی را وارد نمایید:</label><br />
        <input type="text" name="gurantee_no" class="textfield" />
        <input type="submit" value="جستجو" class="btn" />
        <span id='info'></span>
    </form>
</section>
  • 0
    Спасибо, я подал заявку и отредактировал свой код, но проблема все еще остается, можете проверить еще раз
0

Этот код нуждается в какой-то большой любви. У вас нет одной половины двоеточия во всем блоке вставки, и парсер JavaScript автоматически добавляет их в конец строк, а это означает, что каждая строка, которая не имеет открывающей скобки (ни одна из них), не будет прекращена.

  1. завершите свои заявления точками с запятой
  2. правильно отпечатать свой код
  3. положите свои скобки на правильную линию
  4. повторно (или редактировать), если у вас все еще есть проблемы

:)

  • 0
    Спасибо, я применил все ваши уведомления и отредактировал свой код, но все еще проблема, можете проверить еще раз
0

Ваш код синтаксически неверен.

  • Внутри кода нет полуколон (т.е ;), что означает, что вы получите неожиданные результаты. Вы должны добавить полуточку в конце каждой строки в JavaScript.
  • Открывающиеся скобки должны быть в одной строке, а не в следующей строке.
  • Для операторов сравнения вместо равенства (т. ==) используйте оператор Identity/strict (т. ===), чтобы избежать преобразования типов в сравнении.

Исправьте эти ошибки перед продолжением.

  • 0
    Чтобы добавить к тому, что сказал @Gaurish. каждый раз, когда вы создаете что-то новое, вы также должны использовать ключевое слово var. i, e params = " должен стать var params = " .
  • 0
    Спасибо, я применил все ваши уведомления и отредактировал свой код, но все еще проблема, можете проверить еще раз

Ещё вопросы

Сообщество Overcoder
Наверх
Меню