Вызову Ajax не удается опубликовать данные при «успехе»

#php #jquery #ajax #post

#php #jquery #ajax #Публикация

Вопрос:

У меня есть простая функция AJAX ниже, при нажатии кнопки #submit_message, которая находится на модальном, данные отправляются на страницу (insert_message.php ), где данные вводятся в базу данных и модальная перезагрузка. Я хочу отправить значение id, которое является recipient_id для модального. Первая часть функции работает, и модальная загрузка выполняется отлично, но данные post в модальную не публикуются — как ни в чем — в Firebug, в который отправляются данные insert_message.php , но по возвращении ничего. У меня есть очень похожие функции, которые выполняют другие функции, и они работают нормально. Я искал ответ, но я думаю, что это очень специфическая проблема, поэтому успеха нет. Это может быть даже проблема с синтаксисом — я новичок в jQuery.

 $("#submit_message").click(function(){
   var recipientId = $('#profile_id').val();
   var subject = $('#message_subject').val();
    $.ajax({
        url: '../ajax/insert_message.php',
        type: 'post',
        data: {
          'subject': $('#message_subject').val(),
          'message': $('#message_field').val(),
          'recipientId': recipientId,
          },
            success: function(html) {
               $('.message_holder').load('message_modal.php', {id: recipientId});
               $('input[type="text"],text').val('');
               $('input[type="text"],textarea').val('');
              }
            });
       return false;
      });
  

Вот файл PHP….

  if(isset($_POST['subject']) 
  amp;amp; !empty($_POST['subject'])                
  amp;amp; isset($_POST['message']) 
  amp;amp; !empty($_POST['message'])
  amp;amp; isset($_POST['recipientId'])
  amp;amp; !empty($_POST['recipientId'])){

  $message = new Message();
  $message->subject = ($_POST['subject']);
  $message->message = ($_POST['message']);
  $message->time = strftime("%Y-%m-%d %H:%M:%S", time());
  $message->sender_id = $_SESSION['sender_id'];
  $message->recipient_id = $_POST['recipientId'];
  $message->status = "unread";
  $message->create();
}
  

PHP-файл работает, и отправляемые ему данные попадают в database…so все идет нормально. Все еще тестирую другие области. У меня такое странное чувство, что это не имеет ничего общего с jQuery и больше связано с модальным …. отсутствие включения необходимого файла или чего-то в этом роде. Сейчас работаю над этим ….. (ps у меня есть операторы isset и !empty, потому что я нахожу случайные неожиданные варианты поведения с PHP в этом отношении …..)

Вот выходные данные — параметры отправляются и вставляются в базу данных…..

       Parametersapplication/x-www-form-urlencoded
      message           Message
      recipientId   162
      subject           Subject

       Source
       subject=Subject amp;message=Message amp;recipientId=162
  

Затем в журнале консоли говорится…..

       (nothing to output)  scripts_ajax.js (line 66)
  

Никаких сообщений об ошибках …… все еще работаю над этим …. спасибо за ваше внимание,

Немного запутался, разместив здесь полную форму, но это message_modal.php похоже на то. Я думаю, что на данном этапе проблема здесь…..

  <div id="myModal" class="reveal-modal-mail">
    <p>Message to <?php echo User::full_name($id);?><p>


    <?php 

        if(isset($_POST['recipientId'])){
            //DO STUFF 
            }
    ?>
             <form action="" method="post">
                  <table>   
                        <tr> 
                            <td>  
                            <input id="message_subject" name="subject" type="text" 
                            placeholder="Message subject" size="20"  maxlength="3000" value=""/>
                            </td>
                        </tr>                        
                  </table>
                  <table>
                        <tr> 
                            <td>        
                            <textarea id="message_field" name="message" type="text" placeholder="Message details"></textarea>                               
                            </td>
                        </tr>      
                  </table>
                <input id="submit_message" type="button" name="submit" value="submit" />                
                <input id="profile_id" type="hidden" name="submit" value="<?php echo $id;?>"/>           
           </form>
 <a class="close-reveal-modal">amp;#215;</a>
  

Комментарии:

1. Я не вижу ничего плохого в этом коде. Посмотрите, выполняется ли этот код и достигает $.ajax() ли он вызова.

2. Если insert_message.php ничего не возвращает, ваш первый шаг отладки — убедиться, что php работает правильно. Опубликуйте это вместо этого или, по крайней мере, подтвердите, что это работает.

3. Несколько предложений. 1) Поместите console.log() оператор или точку останова в свой success обработчик, чтобы узнать, вызывается ли он. 2) Если он не вызывается, затем определите error обработчик для вызова ajax и запишите его аргументы, чтобы узнать, почему он возвращает ошибку, и 3) Посмотрите на вкладку сеть отладчика Chrome, чтобы точно увидеть, что возвращается с вашего сервера вашему клиенту. 4) Проверьте консоль отладки, чтобы узнать, не сообщается ли о каких-либо ошибках.

4. попробуйте этот способ для отладки вызовов ajax success:funcition(response,textStatus,jqXHR){console.log(response);},error:function(jqXHR,textStatus,errorThrown){console.log(textStatus) ; }

5. Как насчет message_modal.php файл — на что это похоже? Кроме того, селекторы $(‘input[type=»text»],text’).val(«) и $(‘input [type=»text»],textarea’).val(«), вероятно, срабатывают раньше вашего . команда загрузки завершается. Используйте полную функцию с вашим .load. См . api.jquery.com/load за подробностями.

Ответ №1:

Я нашел ответ, и в нем нет ничего неожиданного или неприятного.

Класс ‘message_holder’, на который ссылается функция ajax, был неправильно указан на странице HTML.

Ошибка с задержкой.

Извиняюсь за трату времени людей