Ajax有500个内部错误

时间:2015-05-20 17:49:35

标签: javascript php ajax

当我使用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>";    
    }
}
?>

有人能帮我一把吗?非常感谢。

4 个答案:

答案 0 :(得分:2)

你混合了JS和PHP语法,在defaultdict文件中你有语法错误。

  1. sms.php之前的美元符号
  2. smtp代替idOne
  3. $_POST['idOne']代替idTwo
  4. SQL查询结尾处的附加括号
  5. 第11行,再次$_POST['idTwo']而不是idOne

  6. $_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>";    
        }
      }
    }
 ?>
相关问题