【问题标题】:how do I call a function from a controller using ajax(jquery) in zend?如何在 zend 中使用 ajax(jquery) 从控制器调用函数?
【发布时间】:2014-04-11 11:27:41
【问题描述】:

这是我的尝试,这是由onclick 事件执行的!

var post_array = {
    data_post: postData
}; //Array 
$.ajax({
    url: "location/add-names",
    type: "POST",
    data: post_array,
    success: function (data, textStatus, jqXHR) {
        //data - response from server
    },
    error: function (jqXHR, textStatus, errorThrown) {

    }
});

还有 PHP 代码:

<?php

class LocationController extends \Lunchbox\Controller
{
    public function indexAction()
    {
     ...................
    }
    public function addNamesAction(){
        echo 1;
    }
}

路线:

 $location = new Zend_Controller_Router_Route('locatie/:locationUrl/:day', 
            array('module'     => 'default', 'controller' => 'location', 'day' => Cronos::getCurrentDayName()),
            array('day' => Cronos::$weekDayRegex)
        );
        $router->addRoute('location', $location);

我想在 ajax 事件之后显示“1”。但是萤火虫告诉我这个错误:“404 Not Found”。我是zend的新手,所以请给我一个合理的答案。谢谢:D

现在 debug.log 向我展示了这个:

2014-04-14T09:57:09+03:00 CRIT (2): ----------------
2014-04-14T09:57:09+03:00 CRIT (2): URL: /location/add-names
2014-04-14T09:57:09+03:00 CRIT (2): script 'location/add-names.phtml' not found in path (/home/lunchbox/public_html/application/views/scripts/)
#0 /opt/ZendFramework-1.12.3/library/Zend/View/Abstract.php(884): Zend_View_Abstract->_script('location/add-na...')
#1 /opt/ZendFramework-1.12.3/library/Zend/Controller/Action/Helper/ViewRenderer.php(900): Zend_View_Abstract->render('location/add-na...')
#2 /opt/ZendFramework-1.12.3/library/Zend/Controller/Action/Helper/ViewRenderer.php(921): Zend_Controller_Action_Helper_ViewRenderer->renderScript('location/add-na...', NULL)
#3 /opt/ZendFramework-1.12.3/library/Zend/Controller/Action/Helper/ViewRenderer.php(960): Zend_Controller_Action_Helper_ViewRenderer->render()
#4 /opt/ZendFramework-1.12.3/library/Zend/Controller/Action/HelperBroker.php(277): Zend_Controller_Action_Helper_ViewRenderer->postDispatch()
#5 /opt/ZendFramework-1.12.3/library/Zend/Controller/Action.php(527): Zend_Controller_Action_HelperBroker->notifyPostDispatch()
#6 /opt/ZendFramework-1.12.3/library/Zend/Controller/Dispatcher/Standard.php(308): Zend_Controller_Action->dispatch('addNamesAction')
#7 /opt/ZendFramework-1.12.3/library/Zend/Controller/Front.php(954): Zend_Controller_Dispatcher_Standard->dispatch(Object(Zend_Controller_Request_Http), Object(Zend_Controller_Response_Http))
#8 /opt/ZendFramework-1.12.3/library/Zend/Application/Bootstrap/Bootstrap.php(97): Zend_Controller_Front->dispatch()
#9 /opt/ZendFramework-1.12.3/library/Zend/Application.php(366): Zend_Application_Bootstrap_Bootstrap->run()
#10 /home/lunchbox/public_html/index.php(31): Zend_Application->run()
#11 {main}

有人可以帮我解决这个问题吗?

【问题讨论】:

  • 您是否已将此路由添加到您的 module.config.php 中?或者您是否使用了 ACL 等其他限制?
  • 请再次查看我的帖子
  • 如果不起作用,请尝试在 ajax 的 url 中仅提供 addNames 看看这个:stackoverflow.com/questions/8485726/…

标签: php ajax zend-framework


【解决方案1】:

我可以在这里看到一些东西。

  1. 您显示的路线是针对“/locatie/:locationUrl/:day”,但您需要的路线是针对“/location/add-names”
  2. 在 ajax 中 - 您使用的驼峰式大小写将指示 add-names 的 url。大写字母将 url 与 -
  3. 分开

希望有帮助

【讨论】:

  • thx man,但现在我没有收到 404 错误,我收到了这个:“500 Internal Server Error”,任何想法或提示,为什么?谢谢
猜你喜欢
  • 2013-12-15
  • 2014-04-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-27
  • 1970-01-01
  • 1970-01-01
  • 2023-04-06
相关资源
最近更新 更多