当我使用php和ajax进行网络聊天页面时,我遇到了问题。问题是当我在浏览器中看到网页时,在控制台中发现了这个消息:
POST http://subdomain.domain.com/ajax/sms.php 500 (Internal Server Error)
x.ajaxTransport.send @ jquery.min.js:6
x.extend.ajax @jquery.min.js:6
doAjax @ funcionesChat.js:22onclick @ chat:50
而且我不知道为什么在页面中出现错误以及我做错了什么......
在我的html中,我有以下代码:
<button type="button" onclick="doAjax(2)">a</button>
<div class="chat">
<div class="boxChat" id = "sms">
</div>
</div>
在我的ajaxfunction.js
中是以下代码:
function doAjax(idOne, idTwo) {
$.ajax({
type: 'POST',
url: 'ajax/sms.php',
data: {idOne: idOne, idTwo: idTwo},
dataType: 'text',
success: function (data) {
$('#sms').html(data);
}
}
sms.php
包含以下代码:
<?php
$db = new PDO('mysql:host=localhost;dbname=XXXX;charset=utf8',
'user', 'password');
stmt = $db->query("SELECT * FROM sms WHERE sender = ".idOne."
AND reciver = ".idTwo.")");
$smss = $stmt->fetchAll(PDO::FETCH_ASSOC);
foreach ($smss as $sms) {
if ($sms["sender"] == idOne){
echo "<p style='text-align: right;'>".$sms["mesage"]."</p>";
}else{
echo "<p style='color: green;''>".$sms["mesage"]."</p>";
}
}
?>
有人能帮我一把吗?非常感谢。
答案 0 :(得分:2)
你混合了JS和PHP语法,在defaultdict
文件中你有语法错误。
sms.php
之前的美元符号smtp
代替idOne
$_POST['idOne']
代替idTwo
$_POST['idTwo']
而不是idOne
$_POST['idOne']
第11行
$stmt = $db->query("SELECT * FROM sms WHERE sender = ".$_POST['idOne']."
AND reciver = ".$_POST['idTwo']);
答案 1 :(得分:0)
我在这里看到一些拼写错误:
stmt = $db->query("SELECT * FROM sms WHERE sender = ".idOne."
AND reciver = ".idTwo.")");
应该是:
$stmt = $db->query("SELECT * FROM sms WHERE sender = ".$idOne."
AND reciver = ".$idTwo.")");
$idOne
和$idTwo
定义在哪里?
也许你错过了类似的东西:
$idOne = $_POST['idOne'];
$idTwo = $_POST['idTwo'];
答案 2 :(得分:0)
500是服务器错误。这意味着服务器上出现了严重问题,所以它可能不是你的ajax,除非你发送完全无效的数据。一个问题 - 是&#34; reciver&#34;数据库中的正确字段名称?它拼错了。如果这是数据库中不正确的列名,那么那就是你的错误。
答案 3 :(得分:0)
像这样使用
<?php
if(!isset($_POST['idOne'])){
echo "Error! missing idOne";
} else if(!isset($_POST['idTwo'])) {
echo "Error! missing idTwo";
} else {
$idOne = $_POST['idOne'];
$idTwo = $_POST['idTwo'];
$db = new PDO('mysql:host=localhost;dbname=XXXX;charset=utf8',
'user', 'password');
$stmt = $db->query("SELECT * FROM sms WHERE sender = ".$idOne."
AND reciver = ".$idTwo);
$smss = $stmt->fetchAll(PDO::FETCH_ASSOC);
foreach ($smss as $sms) {
if ($sms["sender"] == $idOne){
echo "<p style='text-align: right;'>".$sms["mesage"]."</p>";
}else{
echo "<p style='color: green;''>".$sms["mesage"]."</p>";
}
}
}
?>