首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >无法使用If语句检查POST数据。

无法使用If语句检查POST数据。
EN

Stack Overflow用户
提问于 2013-03-17 23:04:51
回答 3查看 223关注 0票数 0

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

代码语言:javascript
运行
复制
  $.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文件:

代码语言:javascript
运行
复制
       <?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调用就没有得到任何响应。我尝试了不同的方法:

代码语言:javascript
运行
复制
   <?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数据必须在那里,因为我能够在不使用if语句时获取$_POST['id']值)。

我也试着把echo json_encode($row)放在if语句之外,但也没有用。你知道出什么问题了吗?

EN

回答 3

Stack Overflow用户

发布于 2013-03-17 23:37:11

代码语言:javascript
运行
复制
$.ajax({
  type: "POST",
  url: "fetch.php",
  data: id,

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

数据:...对象必须是键/值对。

所以把这句话写下来

代码语言:javascript
运行
复制
  data: { id : id },

相反,它应该是有效的。

票数 1
EN

Stack Overflow用户

发布于 2013-03-17 23:07:11

代码语言:javascript
运行
复制
if ($_SERVER['REQUEST_METHOD'] != 'POST') {
   die("Invalid request method: " . $_SERVER['REQUEST_METHOD']);
}

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

还要注意的是,您的SQL injection attacks是完全开放的。

票数 0
EN

Stack Overflow用户

发布于 2013-03-18 00:38:14

您可以尝试对您的代码执行以下测试

  1. 检查您是否有正确的php请求页面。
  2. 在google chromes中查看右键单击inspect element,然后单击console选项卡任何错误都会在成功前显示函数结果: function (Msg) add

function $("body").append(msg)

  1. add suceess:function(

) {}

错误:function(xhr,err){ alert("readyState:“+xhr.readyState+”\n状态:"+xhr.status);alert("responseText:"+xhr.responseText);}

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15462265

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档