JQuery Ajax проблема - PullRequest
       2

JQuery Ajax проблема

2 голосов
/ 28 января 2011

Эй, ребята, у меня есть этот фрагмент кода jquery:

<script type="text/javascript" >
    $(function() {
        $(".submitButton").click(function() {
            var post = $("#post").val();
            var dataString = 'post='+ post;

            if(post=='')
            {
                $('.error').fadeIn(200).show();
            }
            else
            {
                $.ajax({
                    type: "POST",
                    url: "post.php",
                    data: dataString,
                    success: function(){
                        $('.error').fadeOut(200).hide();
                    }

                 });
            }
            return false;
        });
        $('.error').hide();
    });
</script>

И я хочу, чтобы он публиковал значения без обновления.Я создал post.php:

<?php  
    ini_set('display_errors', 'On');
    error_reporting(E_ALL);

    session_start();

    $post=mysql_real_escape_string($_POST['post']);
    $mysql=mysql_connect('localhost','***','***');
    mysql_select_db('jmtdy');
    $result=mysql_query("select * from users where username='".$_SESSION['username']."'") or die(mysql_error());
    $dbarray=mysql_fetch_assoc($result);
    mysql_query("insert into posts (userid, post, username) values ('".$dbarray['id']."','".$post."','".$dbarray['username']."'") or die(mysql_error());   
?>

Но значения по-прежнему не добавляются в базу данных.Вы знаете, в чем может быть проблема?

Ответы [ 3 ]

1 голос
/ 29 января 2011

Хорошо, возьми.

<!doctype html>
<html>
    <head>
        <title>Test</title>
            <script type="text/javascript" src="http://code.jquery.com/jquery-1.4.4.min.js"></script>
            <script type="text/javascript">
                $(document).ready(function() {
                    $('#your_form').submit(function(e){
                        e.preventDefault(); // prevents default form submit action
                        $('.error').hide();
                        $('.loading').fadeIn(); // show the loading bar or circle, whatever
                        if (check_form($(this))) {
                            $.post('post.php',$(this).serialize(),function(data){
                                $('.loading').hide();
                                if (data.error === '') {
                                    console.log(data.response);
                                } else {
                                    console.log(data.error);
                                }
                            },"json");
                        } else {
                            return false;
                        }
                    });
                });
                function check_form(elem) {
                    var check_array = elem.find('input:not([type=submit])');
                    $.each(check_array,function(i){
                        if (check_array.eq(i).val() === '') {
                            return show_error('Field "' + check_array.eq(i).prev().text() + '" must be filled.');
                        }
                    });
                    return true;
                }
                function show_error(text) {
                    $('.error').html(text).fadeIn();
                }
        </script>
        </head>
        <body>
        <div class="error" style="display:none;"></div>
        <div class="loading" style="display:none;"><img src="http://action.afscme.org/c/51/images/ajax-loader.gif" /></div>
        <form id="your_form">
            <label for="your_name">Your name</label>
            <input type="text" name="your_name" />
            <label for="your_name">Your surname</label>
            <input type="text" name="your_surname" />
            <input type="submit" value="Submit" />
        </form>
    </body>
</html>


<?php
    ini_set('display_errors', 'On');
    error_reporting(E_ALL);
    session_start();

    $post = mysql_real_escape_string($_POST['your_name'].' '.$_POST['your_surname']);
    $mysql = mysql_connect('localhost','***','***');
    mysql_select_db('jmtdy');
    $result = mysql_query("select * from users where username='".$_SESSION['username']."'") or die(mysql_error());
    $dbarray = mysql_fetch_assoc($result);
    $query = "insert into posts (userid, post, username) values ('".$dbarray['id']."','".$post."','".$dbarray['username']."'";
    if (mysql_query($query)){
        $data['error'] = '';
        $data['response'] = 'Everything is ok';
    } else {
        $data['error'] = mysql_error($mysql);
    }

    echo json_encode($data);
?>
1 голос
/ 28 января 2011

Вы проверили, чтобы убедиться, что сервер не генерирует ошибку где-нибудь?Вы должны убедиться, что ваш PHP-скрипт работает правильно, выдав что-то.

Я бы также рекомендовал использовать Firebug (или Chrome Dev. Tools) для мониторинга запросов XHR и проверки наличия каких-либопроблемы там.

0 голосов
/ 28 января 2011

Попробуйте использовать:

var data = new Object();
data["post"] = $("#post).val();
// ....
// In ajax section
data: data,
dataType: "json"

Сделайте print_r($_POST) в вашем php файле. И используйте отладчик для обработки того, что посылает ваш ajax.

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