jquery $ .post не работает в некоторых браузерах - PullRequest
0 голосов
/ 10 ноября 2011
 $(document).ready(function(){
     $("#btnc").click(function(){
            $.post("php/snova_campanha.php", {campanha : $("#campanha").val() },
                function(data){
                    if(data == "1" )
                    {
                        alert(data);
                    }
                    else
                        alert(data);
                });
     });
});

PHP имеет только:

<?php
echo 0;
return;
?>

HTML:

<div id="corpo" align="center">
    <br/><br/>
    <h1 align="center" style="color:#F8F8F8">Nova Campanha</h1>
    <br/><br/><br/>
    <form id="novacamp">
        <label style="color:#F8F8F8" for="campanha">Nome</label>
        <input align="middle" size="35" type="text" name="campanha" id="campanha"/>
        <br/>
        <input type="submit" id="btnc" value="OK"/>
    </form>
</div>

Я использую этот PHP только для тестов, я буду реализовывать вставку в базу данных и возвращать 1 сsucess или 0.

Ну, у меня есть две страницы, другая работает нормально:

РАБОЧИЕ СТРАНИЦЫ ВХОДА:

 $(document).ready(function(){
     $("#login").click(function(){
        $("#login").attr("disabled", "disabled");
                $.post("php/slogin.php", {usuario : $("#usuario").val(), senha : $("#senha").val()},
                function(data){
                    if(data != "1" && data != "0")
                    {
                        alert(data);
                        $("#login").removeAttr("disabled");
                    }
                    else
                        window.location = "principal.php";
                });
     });
});

HTML

<div id="bar">
    <div id="container">
        <!-- Login Starts Here -->
        <div id="loginContainer">
            <img id="logoNetradio" src="../images/logonetradio3.png"/>
            <br/><br/><br/>
                <form id="formLogin">
                    <label for="usuario">Usuário</label>
                    <input align="middle" size="35" type="text" name="usuario" id="usuario"/>
                    <br/><br/>
                    <label for="senha">Senha</label>
                    <input align="middle" size="35" type="password" name="senha" id="senha" />
                    <br/>
                    <input type="submit" id="login" value="Login"/>
                </form>
        </div>
        <!-- Login Ends Here -->
    </div>
</div>

Я не вижу никакой разницы ......... Когда я запускаю нерабочий код, адрес в моих браузерах меняется на www.myaddress.com/current_page.php?campanha=value_on_textfield выглядит как $.сообщение делает запрос GET на текущей странице ... Оба кода работают на IExplore, а рабочие страницы работают на Chrome и IE, но не на Firefox .... Есть идеи?

Ответы [ 2 ]

1 голос
/ 10 ноября 2011

На самом деле, return false имеет некоторые побочные эффекты в обработчиках событий jQuery, о которых большинство людей не знают.Если все, что вы хотите сделать, это запретить отправку формы, то вам следует использовать event.preventDefault().

. Чтобы упростить вашу жизнь, я бы рекомендовал изменить ваш PHP-файл так, чтобы он возвращал json, например так:

<?php
echo "{'status':'0'}";
?>

Затем укажите 'json' при выполнении поста:

$(document).ready(function(){
     $("#btnc").click(function(evt){
            $.post(
                "php/snova_campanha.php", 
                {campanha : $("#campanha").val() },
                function(data){
                   alert(data.status);
                },
                "json"
            );
            // Keep the form from submitting
            evt.preventDefault();
     });
});

Кроме того, я предложу изучить превосходный плагин формы jQuery от malsup, который заботится обольшинство из того, что вы пытаетесь сделать здесь.

Наконец, вы можете попробовать использовать полный вызов $.ajax вместо $.post:

$('#btnc').click(function(evt) {
   $.ajax({
       method: 'POST',
       url: 'php/snova_campanha.php',
       data: {
           campanha: $('#campanha').val()
       },
       dataType: 'json',
       success: function(data, status) {
           alert(data);
       },
       error: function(jqXHR, status, err) {
           alert('ERROR');
           alert(String(err));
       }
   });
   evt.preventDefault();
});

Вероятно, происходит то, что$.post вызов вызывает ошибку.Использование $.ajax, как указано выше, позволит вам уловить эту ошибку.

0 голосов
/ 10 ноября 2011

Событие click вашей кнопки должно возвращать false, если намерение состоит в том, чтобы запретить кнопке публиковать форму.

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