URL в запросе ajax в PHP MVC Framework, не знаете как? - PullRequest
0 голосов
/ 12 ноября 2011

У меня проблема с запросом AJAX в среде PHP MVC: я не знаю, как вызывать данные в формате JSON из контроллера в представление, используя, например, jQuery.

Я потратил много часов на поискилюбой полезный совет в Интернете и попытка решить эту проблему самостоятельно, но безуспешно.

Я думаю, что проблема в том, где мне нужно написать URL;Я не могу написать это правильно.

Это код для контроллера:

public function indexAction()
{
   $dbh = new PDO('mysql:dbname=myframework;host=localhost', 'root', '');
   $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
   $stmt = $dbh->prepare('SELECT variety ,fruit_id FROM fruit limit 10');
   $stmt->setFetchMode(PDO::FETCH_ASSOC);
   $stmt->execute();
   $data = $stmt->fetchAll();
   echo json_encode($data);
}

И это код вида:

<!DOCTYPE html>
<html><head><meta charset="utf-8" /> </head>
 <h1>grid ajax</h1> <body>  <table id='grid'></table>
<script type="text/javascript" src="<?php echo PROJECT_URL ?>/views/search/jquery.js"></script>
<script type="text/javascript">
$(function(){
$.getJSON( myURL - HERE IS PROBLEM ! , function(json){
 for (var i=0;i<json.length;i++) {
 $('#grid').append("<tr><td>" + json[i].fruit_id + "</td><td>" + json[i].variety + "</td></tr>")
       }
    });
 });
</script>
</body>
</html>

Вот маршрутизация:

getUrlFor($controller = 'index', $action = 'index') { $route = array('controller' => $controller, 'action' => $action); $routes = $this->getRoutes(); $url = array_search($route, $routes); if ($url === false) { $url = $controller . '/' . $action; } $url = PROJECT_URL . '/' . $url; return $url; } }

и public function urlFor():

public function urlFor($controller = 'index', $action = 'index')
{
    return Router::getInstance()->getUrlFor($controller, $action);
}

Эта функция работает в этой среде Everywere;Пример формы URL: http://localhost/myframework/ajax/index, (var $myURL = "<?php echo $this->urlFor('ajax', 'index'); ?>"; - в jQuery я использую его в этой форме), только не в $.getJSON.Я пытался написать этот URL во многих формах, ни одна из них не сработала.Это простой пользовательский фреймворк.

1 Ответ

1 голос
/ 12 ноября 2011

Я не уверен, как настроена ваша маршрутизация, поэтому не могу предложить конкретную помощь. Но я обычно делаю (я использую codeigniter ), чтобы создать отдельный контроллер для всех вызовов ajax. Функции в контроллере получают данные из модели, передают эти данные в представление и направляют представление в запрос ajax.

Codeigniter имеет (imo) очень хорошую маршрутизацию, вы вызываете контроллер ajax с помощью URL

http://sitename.com/index.php/controller_name/function

и это то, что вы передаете вызов ajax

$.getJSON( 'http://sitename.com/index.php/controller_name/function' , function(json){
 for (var i=0;i<json.length;i++) {
 $('#grid').append("<tr><td>" + json[i].fruit_id + "</td><td>" + json[i].variety + "</td></tr>")
       }
    });

Надеюсь, это поможет вообще.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...