За последние 24 часа нас посетили 17587 программистов и 1732 робота. Сейчас ищут 994 программиста ...

Метод POST в $.ajax не пашет - как быть?

Тема в разделе "JavaScript и AJAX", создана пользователем mark2010, 31 дек 2010.

  1. mark2010

    mark2010 Активный пользователь

    С нами с:
    18 авг 2010
    Сообщения:
    80
    Симпатии:
    0
    В принципе вопрос относится вот сюда, но в той теме уже не один интересный вопрос :)) поэтому задам здесь.

    [js]
    function show()
    {
    $.ajaxSetup({
    type:"POST"
    });

    $.ajax({
    dataType: 'json',
    url: "server-script.php",
    cache: false,
    data: $('#ajaxForm').serialize(),
    success: function(data){
    alert(data.result);
    }
    });
    }

    $(document).ready(function(){
    show();
    });
    [/js]

    Т.е. как бы сетапом даю понять что будет использоваться POST. Далее передаю сериализованные данные вот этой формы:

    HTML:
    1.  
    2. <form method="post" id="ajaxForm">
    3.     <input name="test">
    4.     <input type="button" onClick="show()">
    5. </form>
    6.  
    А на сервере - вот это:
    Код (Text):
    1.  
    2.  
    3.     echo json_encode(array('result' => $_POST['test']));
    Валидный json, нормальное объявление jQuery... всё соблюдено... что не так-то??

    P. S. Как трудно с одного фреймворка на другой переучиваться, оказывается....
     
  2. Gromo

    Gromo Активный пользователь

    С нами с:
    24 май 2010
    Сообщения:
    2.786
    Симпатии:
    2
    Адрес:
    Ташкент
    покопайся немного в отправке запроса $.post(), указывая в конце тип json
    $.post('/path/to/your.php', {}, function(data){ alert(data); }, "json");
    http://api.jquery.com/jQuery.post/
     
  3. mark2010

    mark2010 Активный пользователь

    С нами с:
    18 авг 2010
    Сообщения:
    80
    Симпатии:
    0
    Gromo
    Ну как бы понятно, но не работает. Вот модифицированный код:

    [js]
    $(document).ready(function()
    {
    $('#btn').bind('click', function()
    {
    $.post('server-script.php', $('#ajaxForm').serialize(), function(data){ alert(data); }, "json");
    });
    });
    [/js]

    HTML:
    1.  
    2. <form method="post" id="ajaxForm">
    3.     <input name="test">
    4.     <input type="button" id="btn">
    5. </form>
    6.  
    на сервере ничего не менял.
     
  4. Gromo

    Gromo Активный пользователь

    С нами с:
    24 май 2010
    Сообщения:
    2.786
    Симпатии:
    2
    Адрес:
    Ташкент
    test.php
    PHP:
    1.  
    2. <?php
    3.  
    4.   if(count($_POST)>0){
    5.     echo json_encode($_POST);
    6.     exit();
    7.   }
    8.  
    9. ?>
    10. <html>
    11. <head>
    12.   <script type="text/javascript" src="/includes/jquery.js"></script>
    13.   <script type="text/javascript">
    14.     function send_post(){
    15.       $.post('/test.php', {'name':$('input[name=name]').val()}, function(data){ alert(data.name); }, "json")
    16.     }
    17.   </script>
    18. </head>
    19. <body>
    20. <form action="" method="post">
    21.   <input type="text" name="name" value="input_name">
    22.   <input type="submit" value="send">
    23.   <input type="button" value="ajax" onclick="send_post();">
    24. </form>
    25. </body>
    26. </html>
    27.