Php Ajax调用未能在“成功”上发布数据
下面我有一个简单的AJAX函数,单击模式上的submit_message按钮,数据被发送到页面insert_message.php,在那里数据被输入数据库,模式重新加载。我想将id的值(即收件人的id)发送到modal。函数的第一部分工作正常,模态加载完美,但是在Firebug上,没有向模态发送post数据(如nothing中所示),而是将数据发送到insert_message.php,但返回nothing。我有非常类似的功能,做其他事情,这些工作很好。我一直在寻找答案,但我认为这是一个非常具体的问题,所以没有成功。这甚至可能是一个语法问题——我是jQuery新手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。我有非常类似的功能,做其他事情,这些工作很好。我一直在寻找答案,但我认为这是一个非常具体
$("#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">×</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中使用完整的函数。有关详细信息,请参阅。