将数据从ajax传递到php时出现Ajax PHP错误

时间:2015-01-11 13:17:06

标签: javascript php jquery mysql ajax

来自javascript的我的ajax代码

  function makeRequest(button) {

            alert(button.value);     
            var no =button.value;

    $.ajax({
        url: "findques.php",
        type: 'POST',
        dataType:"json",
        data: {id:no},

       success: function(response) {       
             $.each(response, function(idx, res){
         alert(res.question);

    });
        },
        error:function(err){
    console.log(err);
        }

    });
}

我的用于检索数据的PHP代码如下

<?php

$connect =mysql_connect('localhost', 'root', 'password');
mysql_select_db('test');

if($connect->connect_error)
{
die("connection failed : ".$connect->connect_error);
}
if(isset($_POST['id']))
{

 $var = mysql_real_escape_string(htmlentities($_POST['id'])); 
    error_log($var);    
}

$data = "SELECT * FROM `questions` WHERE no=$var";


if(mysql_query($data)==TRUE)
{
    $result=mysql_query($data);
  $row = mysql_fetch_assoc($result);

    $details =array( "id"=>$row['no'],"question"=>$row['Ques'],"op1"=>$row['op1'],"op2"=>$row['op2'],"op3"=>$row['op3'],"op4"=>$row['op4']);

     echo  json_encode($details);

}

else{
   echo "error";

}

$connect->close();


?>

我试图通过php从ajax中检索Mysql数据库中的数据,但它显示“error.jquery.min.js:6 GET 500(内部服务器错误)”

这是我的ajax部分或PHP部分的问题吗?我使用Ubuntu 14.04与apache 2 server.Some建议服务器权限有问题吗?

4 个答案:

答案 0 :(得分:0)

您正在使用type: 'GET',并在PHP中使用$_POST['id']

将类型更改为type: 'POST',

答案 1 :(得分:0)

您的问题是无效的PHP代码。

您似乎在服务器端使用了一些奇怪的不同示例组合:

$connect =mysql_connect('localhost', 'root', 'password');

此行返回句柄(数值),而不是您稍后尝试使用的对象:

if($connect->connect_error)

这会导致内部错误。

要调试这样的事情,您应该开始监视http服务器的错误日志文件。这就是详细记录这些错误的地方。无需查看这些日志文件即可在黑暗中搜索。那没有意义。看看有光的地方(和记录的错误)!

答案 2 :(得分:0)

我使用了mysqli而不是mysql_connect(),并且由于对patrick的建议不推荐使用mysql_connect(),因此错误消失了

答案 3 :(得分:0)

尝试更改此内容......

if(mysql_query($data)==TRUE)
{
    $result=mysql_query($data);
  $row = mysql_fetch_assoc($result);

    $details =array( "id"=>$row['no'],"question"=>$row['Ques'],"op1"=>$row['op1'],"op2"=>$row['op2'],"op3"=>$row['op3'],"op4"=>$row['op4']);

     echo  json_encode($details);

}

对此...

$result = mysql_query($data);
if(mysql_num_rows($result)>0)
{

  $row = mysql_fetch_assoc($result);
  $details =array(
    "id"=>$row['no'],
    "question"=>$row['Ques'],
    "op1"=>$row['op1'],
    "op2"=>$row['op2'],
    "op3"=>$row['op3'],
    "op4"=>$row['op4']);

  echo  json_encode($details);

}

不是100%确定这是问题所在,但这就是我构建基本数据库功能的方式,并且工作正常。

我还要注意,如果这是一个用户可以输入数据的公共页面,我建议使用 PHP PDO 来处理数据库交互。