Как отправить данные AJAX из VIEW в CONTROLLER? (РНР (MVC) + AJAX)

У меня есть страница http://visiting/blog .

Контроллер содержит методы action_index и add_index. Action_index() возвращает страницы индексов. Add_index() метод модели вызова add_data() , который вставляет данные из формы в базу данных.

Мне нужно организовать мое приложение с помощью ajax-запроса, чтобы страница http://visiting/blog не обновлялась после отправки формы.

ПОСМОТРЕТЬ

  $.ajax({ type: 'POST', url: '???', --------------------------> What should URL contain? data: $(this).serialize() 

КОНТРОЛЛЕР

  function action_add() { $title = $this->cleanStr($_POST["title_field"]); $text = $this->cleanStr($_POST["text_field"]); if ($title!="" && $text!="") { $this->model->add_data($title, $text); } else { throw new Exception("Data is empty"); } } 

МОДЕЛЬ

  public function add_data($title, $text) { try { $query="INSERT INTO post (title, text) VALUES('$title', '$text')"; self::$db->query($query); } catch(Exception $e) { echo $e->getMessage(); } } 

ПОСМОТРЕТЬ
Это полный html-файл с ajax-запросом. Я хочу обработать форму, что страница не обновляется, и данные отправляются в базу данных.

  <div class="blog"> <h1> Blog </h1> <form onsubmit="return validate()" id="add_form"> <fieldset> <legend>Add new post:</legend> <label>Title:</label><br> <input type="text" name="title_field" id="titlef"> <br> <label>Text:</label> <br> <textarea name="text_field" id="textf"></textarea> <br> <input onclick="return validate(); return false" type="submit" value="Submit"> <input onclick="return resetclass()" type="reset" value="Reset"> </fieldset> </form> <div class="blogposts"> <div id='response'></div> <?php foreach ($data as $values) { echo "<div class=\"blog_item\">"; echo "<h4 class=\"blog_item_title\">" . $values["title"] . "</h4>" . "<div class=\"blog_item_text\">" . $values["text"] . "</div>" . "<div class=\"blog_item_time\">" . $values["time"] . "</div>"; echo "</div>"; } ?> </div> </div> <script> $(document).ready(function(){ $('#add_form').submit(function(){ // show that something is loading $('#response').html("<b style=\"font-size:20px; margin:40px;\"\">Loading ...</b>"); $.ajax({ type: 'POST', url: '???', ------------> What should be into url? data: $(this).serialize() }) .done(function(data){ // show the response $('#response').html(data); }) .fail(function() { // just in case posting your form failed alert( "Posting failed." ); }); // to prevent refreshing the whole page page return false; }); }); </script> 

url должен быть путь к вашему методу контроллера, который вы хотели бы поразить. вам не нужно включать базовый путь в URL-адрес (но вы можете, если хотите). так что-то вроде:

 url: "howeverYourStructureIs/Action_index", 

ударить метод action_index (). Вы можете думать о ajax как «как если бы вы попали на страницу, но на самом деле не перешли на эту страницу». Таким образом, однако, вы обычно нажимаете этот метод, это URL-адрес, который вы вводите в вызов ajax.

надеюсь это поможет