如何检查请求是否成功

时间:2015-07-16 05:31:08

标签: javascript php jquery mysql ajax

我在p标签中使用contenteditable属性..代码是

<p contenteditable="true" id="Option1_<?php echo $i ?>" style="width:98%;border:4px thin black; background-color:#D6D6D6;font-size:18px;color:black;padding:3px "><?php echo '&nbsp;'.'A.'.'&nbsp;&nbsp;&nbsp'.$question1['Option1'];?></p> 
  <p  contenteditable="true" id="Option2_<?php echo $i ?>" style="width:98%;border:4px thin black; background-color:#D6D6D6;font-size:18px;color:black;padding:3px "><?php echo '&nbsp;'.'B.'.'&nbsp;&nbsp;&nbsp'.$question1['Option2'];?></P> 

和jquery发出请求请求 文件)。就绪(函数(){

$("p[contenteditable=true]").blur(function(){
       var msg = $(".alert");
       var newvalue = $(this).text();
       var field = $(this).attr("id");
       $.post("ajax.php",field+"="+newvalue,function(d){
           var data = JSON.parse(d);
           msg.removeClass("hide");
            if(data.status == '200'){
                msg.addClass("alert-success").removeClass("alert-danger");
            }else{
                msg.addClass("alert-danger").removeClass("alert-success");
            }
           msg.text(data.response);
           setTimeout(function(){msg.addClass("hide");},3000);//It will add hide class after 3 seconds
       });
   });
});

然后php在收到请求时更新我的​​mysql数据库

    <?php
$response = NULL;
$status = http_response_code(406);
if(!empty($_POST)){
session_start();
 $mock_test_name=$_SESSION['mock_test_name'];
$num_of_sections = $_SESSION['num_of_sections'];
$school_name = $_SESSION['school_name'];
$class_name = $_SESSION['class_name'];
$section_name = $_SESSION['section_name'];
$con = mysqli_connect("localhost","root","","onlinetest");
      if (!$con)
      {
      die('Could not connect: ' . mysqli_error());
      }
      $table_space = "$school_name $class_name $section_name $mock_test_name";
      $table = str_replace(" ", "_", $table_space);
      $table_space1 = "$school_name $class_name $section_name";
      $table1 = str_replace(" ", "_", $table_space1);
      $table_space2 = "$table1 $table";
      $table2 = str_replace(" ", "_", $table_space2); 
      $table2 = strtolower($table2);
    foreach($_POST as $key=>$value){
         $key = strip_tags(trim($key));
        $value = strip_tags(trim($value));
        $explode = explode("_",$key);
        $user_id = $explode[1];
        $field_name = $explode[0];
        if(isset($user_id)){
            $update = false;
            $selectData = mysqli_query($con,"SELECT " + $field_name + " FROM " + $table2 + " WHERE question_id='" + $user_id + "'"); //Selecting data from MySql
            $result = mysqli_fetch_assoc($selectData); //Fetching Data
            if($result[$field_name]!==$value){ //Checking if the Value is modified
                $update = mysqli_query($con,"UPDATE" + $table2+ "SET" + $field_name+"="+$value+ "WHERE question_id='"+$user_id+"'"); //Updating MySQL if value is Modifie
            }
            //Update the users Table
            if($update){
                $response = "User Details Updated";
                http_response_code(200); //Setting HTTP Code to 200 i.e OK
            }else{
                $response = "Not Modified";
                http_response_code(304); //Setting HTTP Code to 304 i.e Not Modified
            }
        }else{
            $response = "Not Acceptable";
        }
    }
}
echo json_encode(array(
    "status"=>$status,
    "response"=>$response
));
?>

但是我认为请求没有正确,因为数据库没有得到更新..请告诉我如何检查是否已经发出请求...或者我在编写代码时出错?

2 个答案:

答案 0 :(得分:0)

你的mysqli_query函数形成错误。您必须从括号中转义才能删除变量。

您需要执行类似

的操作
mysqli_connect($con, "SELECT " + var1 + " FROM " + var2);

或者你最终会查询

编辑: 对于更恰当的例子,行

$selectData = mysqli_query($con,"SELECT $field_name FROM $table2 WHERE question_id='$user_id'");

应该是

$selectData = mysqli_query($con,"SELECT " + $field_name + " FROM " + $table2 + " WHERE question_id='" + $user_id + "'");

你会注意到主要区别,特别是两者之间的着色,表示在第一个中,变量$ field_name,$ table2和$ user_id都被解释为查询的一部分。你不想要变量的NAME,你想要它的VALUE,所以你需要将这些字符串连接在一起。

这只是您需要为多个查询执行的多个类似修复之一。编辑器在每个地方标记您尝试用作变量作为字符串一部分的内容,采取相同的步骤来连接字符串。

答案 1 :(得分:0)

您需要像这样更改代码, ajax代码

$.ajax({
  type:"post",
  url:"ajax.php",
  data: "your data",
 success:function(d){
  console.log(d);
}
});

php代码:

      $table_space = $school_name." ".$class_name." ".$section_name." ".$mock_test_name;
      $table = str_replace(" ", "_", $table_space);
      $table_space1 = $school_name." ".$class_name." ".$section_name;
      $table1 = str_replace(" ", "_", $table_space1);
      $table_space2 = $table1." ".$table;
      $table2 = str_replace(" ", "_", $table_space2); 
      $table2 = strtolower($table2);