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

My ajax code from javascript

  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);
        }

    });
}

My php code to retrive data is as follows

<?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();


?>

Im trying to retrive data from Mysql database from ajax through php but it shows me "error.jquery.min.js:6 GET 500 (Internal Server Error)"

Is that a problem with my ajax part or PHP part?? Im using Ubuntu 14.04 with apache 2 server.Some suggest there is a problem with server permissions??

You're using type: 'GET', and in PHP you're using $_POST['id'].

Change type to type: 'POST',

Your problem is invalid php code.

It appears you are using some strange mix of different examples on the server side:

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

This line returns a handle (a numeric value), and not an object which is what you try to use later on:

if($connect->connect_error)

This leads to an internal error.

To debug things like this you should start monitoring the error log file of your http server. That is where such errors are logged in detail. Without looking into these log files you are searching in the dark. That does not make sense. Look where there is light (and logged errors)!

I used mysqli instead of mysql_connect() and error is gone since mysql_connect() is deprecated on suggestions of patrick

Try changing this...

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);

}

To this...

$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);

}

Not 100% sure that's the problem, but that's how I structure my basic DB functions, and it works fine.

I would also note that if this is going to to be a public page where users can enter data, I recommend using PHP PDO to handle your database interactions.