【问题标题】:Implementing Ajax in php MVC在 php MVC 中实现 Ajax
【发布时间】:2017-04-09 20:24:40
【问题描述】:

我想在 php mvc 项目中实现 Ajax,我想使用 ajax 将用户添加到数据库中。 我尝试按照 youtube 教程进行操作,但无法插入数据,这是我的 index.html 页面:

  <!DOCTYPE html>
   <html lang="en">
    <head>
     <!-- Required meta tags -->
     <meta charset="utf-8">
     <meta name="viewport" content="width=device-width, initial-scale=1,shrink-to-fit=no">

    <!-- Bootstrap CSS -->
    <link rel="stylesheet" href="views/css/bootstrap.min.css" >
  </head>
  <body>
   <div class="container">
    <form>
      <div class="form-group">
       <label for="name">Name:</label>
       <input type="text" class="form-control" id="name" placeholder="Enter Name">
      </div>
      <div class="form-group">
        <label for="email">Email:</label>
        <input type="email" class="form-control" id="email" placeholder="Enter Email">
       </div>
       <button type="submit" onclick="saveData()">Add</button>
      </form>
     </div>

     <!-- jQuery first, then Tether, then Bootstrap JS. -->
    <script src="views/js/jquery.js"></script>
    <script src="views/js/bootstrap.min.js" ></script>
    <script>
     function saveData(){
      var name=$('#name').val();
      var email=$('#email').val();
      $.ajax({
       type: "POST",
       url: "?controller=pages&action=add",
       data: "name="+name+"&email"+email,
       success:function(msg){
       alert('Success,ajotuer fil base');
     }
    });
    }
  </script>
 </body>
 </html>

这是我的控制器功能:

public function add(){
  if (isset($_POST['name']) || isset($_POST['email'])){
    echo 'error couldnt retreive inputs';
  }
  else {
    $name = $_POST['name'];
    $email = $_POST['email'];
    User::save($name,$email);
  }
}

user.php 文件

public static  function save($name,$email){
  $db = Db::getInstance();
  $req = $db->prepare("INSERT into user(id,name,email) VALUES ('',?,?)");
  $req->bindParam(1,$name);
  $req->bindParam(2,$email);
  $req->execute();
}

更新 1:添加了完整的 index.html 文件

【问题讨论】:

  • 您的 php 中的语法错误...可以在问题代码中的语法高亮显示中清楚地看到它。 $ajax url中也没有使用php文件的路径
  • 通过使用 ?controller=pages&action=add 这样的方式,routes.php 文件会将请求发送到将处理请求的文件 page_controller。对于 php 错误语法,它的“不能”字我删除了它,但仍然可以插入数据
  • 但是你说它是一个html页面。不清楚你的 mvc 是如何工作的,或者你正在使用什么框架,或者服务器端路由是如何工作的
  • 对于mvc,我按照本教程link
  • 嘿,@KaisBettaieb。首先,欢迎来到 StackOverflow。你能告诉我们到底出了什么问题吗?您的浏览器控制台中是否出现任何错误?或许可以参考stackoverflow.com/help/how-to-ask 了解如何提问。

标签: php jquery templates


【解决方案1】:

乍一看有两个问题:

首先,在您的 JS 代码中,您拼错了 function

success:fucntion(msg){  // <-- fuCNtion should be fuNCtion
  alert('Success,ajotuer fil base');
}

其次,在您的 PHP 代码中,您没有转义字符串中的引号。如果您在字符串中使用单引号,请在字符串周围使用双引号或转义单引号:

if (isset($_POST['name']) || isset($_POST['email'])){
  echo 'error couldn\'t retrieve inputs'; // or:
  echo "error couldn't retrieve inputs";
}

尝试一下,如果可行,请告诉我们。

【讨论】:

  • 你还是拼错了"function"
  • 还是同样的问题。
  • @KaisBettaieb 好的,您是否遇到任何错误?如果您在浏览器中打开开发者控制台,当您单击提交按钮时是否收到任何 Javascript 警告/错误?您是否验证了控制器操作实际上已执行?如果您使用固定的用户名和电子邮件地址手动调用 User 模型的 save() 方法,它是否正常工作?
  • @rickdenhaan 我收到此错误“属性列表后缺少}”我在谷歌中寻找它,我发现我忘记了 index.html 中的逗号但我不知道在哪里,并且“无效的 JSON!JSON.parse:JSON 数据 get_scripts.js.php:16151 第 1 行第 1 列的意外字符”
  • @rickdenhaan 我尝试使用固定的属性执行我的用户类的 save() 方法并且它有效
猜你喜欢
  • 2011-11-19
  • 2016-03-12
  • 1970-01-01
  • 1970-01-01
  • 2010-12-02
  • 1970-01-01
  • 2020-04-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多