Что не так с этим кодом Ajax - PullRequest
0 голосов
/ 16 августа 2011

Этот код 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>

Ответы [ 4 ]

1 голос
/ 16 августа 2011

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

if (gurantee == '')
{
document.getElementById('info').innerHTML = ''
return
}
0 голосов
/ 16 августа 2011

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

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

:)

0 голосов
/ 16 августа 2011

Я думаю, было бы проще использовать 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 голосов
/ 16 августа 2011

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...