$ .post ничего не размещает - PullRequest
       11

$ .post ничего не размещает

0 голосов
/ 21 декабря 2009

Я использую следующий jquery для публикации комментариев к user_submit.php

var submit = document.getElementById("submit_js");
    var comment = document.getElementById("comment");

    $("#submit").bind('click', function(){
        $.post("user_submit.php", {
            comment: $("#comment").text()
        });
    });

user_submit.php слушает как:

$comment = htmlspecialchars($_POST["comment"]);

Я вижу в консоли Firebug, что POST не происходит. только один GET, который я использую для другой функции (может ли это быть виновником?)

Ответы [ 2 ]

4 голосов
/ 21 декабря 2009

Предполагая, что:

<input type="text" id="comment">
<input type="button" id="submit_js">

Вы хотите:

$(function() {
  $("#submit_js").click(function() {
    $.post("user_submit.php", {
      comment: $("#comment").val()
    });
  });
});

PHP:

<?php
$comment = $_POST['comment'];
//...
echo htmlspecialchars($comment); // nothing catches this currently
?>

В вашем коде вы также путаете "submit" и "submit_js". Я бы посоветовал не смешивать Javascript и jQuery-код без необходимости (бизнес getElementById ()). Вам следует ознакомиться с селекторами jQuery . Например:

$("#submit_js")

создаст объект jQuery со всеми элементами (которые должны быть только нулем или одним элементом) с идентификатором submit_js.

0 голосов
/ 21 декабря 2009

Помните, что вы отправляете сообщения через AJAX, поэтому даже если вы возвращаете значение поля, оно не будет отображаться на вашем экране, если вы не прослушиваете его в обратном вызове $ .post.

Чтобы проверить, в чем может быть проблема, отправьте форму без jQuery. Если ваш PHP-скрипт возвращает значение поля, то PHP-скрипт работает - проверьте ваш JavaScript. Если при использовании print_r () вы получаете пустой или пустой массив, убедитесь, что имя поля в вашей форме совпадает с именем, которое вы используете в сценарии PHP.

Не хочу, чтобы вам приходилось переписывать свой код, но вот что я рекомендую сделать.

<form class="comments" method="post" action="user_submit.php">
    <input type="text" name="comment" />
    <input type="submit" value="Submit" />
</form>

JavaScript:

$('.comments').submit(function() {
    var $form = $(this);

    $.post(
        $form.attr('action'),
        $form.serialize(),
        function(data, status) {
            console.log(data);
        }
    );

    return false;
}

Это отправит вашу форму в скрипт PHP. В функции обратного вызова «data» - это возвращаемые данные из сценария PHP. Поэтому, если вы вернете значение поля назад, консоль Firebug отобразит значение.

Если в браузере пользователя отключен JavaScript, форма все равно будет отправлена ​​правильно. Конечно, ваш PHP-скрипт должен будет проверить, была ли форма отправлена ​​через AJAX, чтобы она могла правильно обрабатываться в зависимости от метода запроса. Простой способ проверить это проверить заголовок X-Requested-With. Если он был отправлен через AJAX, значение будет XMLHttpRequest.

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