0

我正在使用 ajax 调用从我的 mysql 数据库中获取一些数据。这是我的ajax调用:

  $.ajax({
    type: "POST",
    url: "fetch.php",
    data: id,
    success: function(msg) {
        var record = JSON.parse(msg);
        $("#name").val(record.name);
        $("#description").val(record.description);
        switch(record.category) {
            case ("Residential"):
                $("#category").val("residential");
                break;
            case ("Modernisation & Domestic Extensions"):
                $("#category").val("modernisation");
                break;
            case ("Feasibility Layouts"):
                $("#category").val("feasibility");
                break;
            case ("Master Planning"):
                $("category").val("master");
                break;
            default:
                $("category").val("");
        };
        switch(record.featured) {
            case ("y"):
                $("#featured").val("y");
                break;
            default:
                $("featured").val("n");
        };
    }
})

这是我的 php 文件:

       <?php 
       $dbc = mysqli_connect('XX','XX','XX','XX');

       $id = $_POST['id'];

       if($dbc) {
          $row = fetchDataFromRecordWithId($dbc,$id);
       }
       else {
          echo 'Database error';
       }

       function fetchDataFromRecordWithId($dbc,$id) {
          $q = "SELECT * FROM Projects WHERE id = ".$id;
          $r = mysqli_query($dbc, $q);

          $row = mysqli_fetch_array($r, MYSQLI_ASSOC);
          mysqli_close($dbc);
          return $row;
       }

       echo json_encode($row);
       ?>

一切都完美无缺,但是当我尝试在我的 php 文件中添加 if 语句以检查是否有任何 POST 数据时,我的 ajax 调用没有得到任何响应。我尝试了不同的方法:

   <?php if(isset($_POST)) { .. my whole php code here .. } ?>

   <?php if(!empty($_POST)) { ..my whole php code here .. } ?>

   <?php if($_POST) { .. my whole php code here .. } ?>

   <?php if($_POST['id']) { .. my whole php code here .. } ?>

但没有任何工作!当我将使用上面列出的任何这些 if 语句时,Ajax 调用不会返回 json 数据。

我无法检查 POST 数据并保持原样,但我想做的是正确的方式。

似乎没有执行 if 语句(但 POST 数据必须在那里,因为$_POST['id']当 if 语句不使用时我能够获取值)。

我也试图把echo json_encode($row)if 语句放在外面,但它也没有帮助。有什么想法有什么问题吗?

4

3 回答 3

1
$.ajax({
  type: "POST",
  url: "fetch.php",
  data: id,

http://api.jquery.com/jQuery.ajax/

data: [...] 对象必须是键/值对。

所以做那条线

  data: { id : id },

相反,它应该可以工作。

于 2013-03-17T15:37:10.717 回答
0
if ($_SERVER['REQUEST_METHOD'] != 'POST') {
   die("Invalid request method: " . $_SERVER['REQUEST_METHOD']);
}

if (isset($_POST['id'])) {
   ... db code here ...
}

另请注意,您对SQL 注入攻击是广泛开放的。

于 2013-03-17T15:07:10.507 回答
0

您尝试对您的代码进行测试

  1. 检查您是否有正确的 php 请求页面。

  2. 在谷歌浏览器中右键单击检查元素然后控制台选项卡中显示任何错误

  3. 在你的成功中:function(msg) 添加 $("body").append(msg)

  4. 在成功之前添加函数:function(result) {}

    错误:函数(xhr,err){ alert("readyState: "+xhr.readyState+"\nstatus: "+xhr.status); alert("responseText: "+xhr.responseText); }

于 2013-03-17T16:38:14.177 回答