Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Ajax调用未能在“成功”上发布数据_Php_Jquery_Ajax_Post - Fatal编程技术网

Php Ajax调用未能在“成功”上发布数据

Php Ajax调用未能在“成功”上发布数据,php,jquery,ajax,post,Php,Jquery,Ajax,Post,下面我有一个简单的AJAX函数,单击模式上的submit_message按钮,数据被发送到页面insert_message.php,在那里数据被输入数据库,模式重新加载。我想将id的值(即收件人的id)发送到modal。函数的第一部分工作正常,模态加载完美,但是在Firebug上,没有向模态发送post数据(如nothing中所示),而是将数据发送到insert_message.php,但返回nothing。我有非常类似的功能,做其他事情,这些工作很好。我一直在寻找答案,但我认为这是一个非常具体

下面我有一个简单的AJAX函数,单击模式上的submit_message按钮,数据被发送到页面insert_message.php,在那里数据被输入数据库,模式重新加载。我想将id的值(即收件人的id)发送到modal。函数的第一部分工作正常,模态加载完美,但是在Firebug上,没有向模态发送post数据(如nothing中所示),而是将数据发送到insert_message.php,但返回nothing。我有非常类似的功能,做其他事情,这些工作很好。我一直在寻找答案,但我认为这是一个非常具体的问题,所以没有成功。这甚至可能是一个语法问题——我是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']) 
  && !empty($_POST['subject'])                
  && isset($_POST['message']) 
  && !empty($_POST['message'])
  && isset($_POST['recipientId'])
  && !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文件工作正常,发送给它的数据进入数据库……因此运行正常。仍在测试其他领域。我有一种奇怪的感觉,jQuery并没有什么特别之处,更多的是与模态有关……缺少所需的文件或其他内容。现在正在做…ps我有isset和!空语句,因为我发现PHP在这方面偶尔会出现意外行为

以下是输出-参数被发送并插入数据库

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

       Source
       subject=Subject+&message=Message+&recipientId=162
然后控制台日志显示

      (nothing to output)  scripts_ajax.js (line 66)
没有报告错误…仍在处理中…感谢您的关注

在这里发布完整表单有点混乱,但这是_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">&#215;</a>

我找到了答案,没有什么意外或不愉快的

ajax函数中引用的类“message_holder”在HTML页面上的拼写错误

延迟错误


很抱歉浪费了人们的时间

我看不出这段代码有什么问题。查看此代码是否正在执行,以及它是否到达$.ajax调用。如果insert_message.php没有返回任何内容,则第一步调试是确保php正常工作。把它贴出来,或者至少确认它是有效的。几点建议。1在成功处理程序中放置一个console.log语句或断点,以查看它是否被调用。2如果它没有被调用,那么为ajax调用定义一个错误处理程序,并记录该调用的参数,以了解它返回错误的原因;3查看Chrome调试器的“网络”选项卡,以查看从服务器返回到客户端的确切信息。4检查调试控制台以查看是否报告了任何错误。尝试以下方法以获得ajax调用调试成功:FunctionResponse,textStatus,jqXHR{console.logresponse;},错误:functionjqXHR,textStatus,ErrorSwitch{console.logtextStatus;}消息_modal.php文件是什么样子的?另外,$'input[type=text],text'.val和$'input[type=text],textarea'.val选择器可能在.load命令完成之前启动。在.load中使用完整的函数。有关详细信息,请参阅。