2017-04-10 59 views
1

我使用AJAX为一个抽搐视频构建聊天系统。重点是动态显示提交的消息,而无需重新加载页面,并且工作正常。然而,这些消息并未提交给我的数据库,并且在刷新页面时,提交的消息不见了。显示我手动插入数据库中的数据。这里是我的代码:AJAX在数据库中插入数据的问题

Dashboard.twig:

<script> 

$("#forminput").submit(function(e){ 
    var url = "dashboard"; 
    $.ajax({ 
     type: "POST", 
     url: url, 
     data: $("#forminput").serialize(), 
     dataType: 'json', //what is returned 
     success : function(data) 
     { 
      $("#table").append("<tr><td>" + data.name + "</td><td>" + data.comment + "</td></tr>"); 
     } 

    }); 
    e.preventDefault(); 
}); 

DisplayCommentsModel: -

private $name; 
private $comment; 

public function printComments() 
{ 
    $app = \Yee\Yee::getInstance(); 

    $cols = Array ("name", "comment"); 

    $comments = $app->db['db1']->get("comments", null, $cols); 
    if ($app->db['db1']->count > 0) 
    { 
     return $comments; 
    } 
} 

AddCommentsModel

private $name; 
private $comment; 

public function __construct($name, $comment) 
{ 
    $this->name = $name; 
    $this->comment = $comment; 
} 

public function comment() 
{ 
    if ($this->validateEmptyFields() == false) 
    { 
     return false; 
    } 
    if ($this->validateFilledFields() == false) 
    { 
     return false; 
    } 
    return true; 
} 

public function validateEmptyFields() 
{ 
    if(empty($this->name) || empty($this->comment)) 
    { 
     return false; 
    } 
    else 
    { 
     return true; 
    } 

} 

public function validateFilledFields() 
{ 
    $nameLenght = strlen($this->name); 
    $commentLenght = strlen($this->comment); 

    if($nameLenght < 2 && $commentLenght < 2) 
    { 
     return false; 
    } 
    return true; 
} 

public function insertCommentsInDb() 
{ 
    $app = \Yee\Yee::getInstance(); 

    $data = array(
     "name" => $this->name, 
     "comment" => $this->comment 
     ); 

    $app->db['db1']->insert('comments', $data); 
} 

CommentsController:

public function index() 
{ 
    $app = $this->getYee(); 
    $newDisplayCommentsModel = new DisplayCommentsModel(); 
    $comments = $newDisplayCommentsModel->printComments(); 
    $data = array(
     'comments' => $comments 
    ); 
    $app->render('dashboard/dashboard.twig', $data); 
} 

/** 
* @Route('/dashboard') 
* @Name('dashboard.post') 
* @Method('POST') 
*/ 
public function post() 
{ 
    $app = $this->getYee(); 

    $name = $app->request->post('name'); 
    $comment = $app->request->post('comment'); 

    //add to database 

    $data = array(
     'name' => $name, 
     'comment' => $comment 
    ); 

    echo json_encode($data); 
} 
+0

如何获得'$(“#forminput”)。serialize()'php'中的值 –

+0

你能更具体吗?在php中获取值是什么意思? – CoffeeGuy

+0

@MayankPandeyz刚刚明白你的意思。感谢我的评论控制器 – CoffeeGuy

回答

1

在您的CommentsController文件中的post函数中,您没有将数据插入到数据库中。下面的代码部分将只回应接收到的任何内容。

$data = array(
     'name' => $name, 
     'comment' => $comment 
    ); 
echo json_encode($data); 

你应该叫insertCommentsInDb()在AddCommentsModel提供您发回的数据

1

$数据= json_encode($数据)之前; //不需要echo

$ this-> db-> insert('tableName',$ data); //你忘了这一行,这将插入json_format到数据库

+0

你在哪里建议我把“$ this-> db-> insert('tableName',$ data);”?在post()函数中不起作用。 – CoffeeGuy