【问题标题】:Action is not returning a single value动作没有返回单个值
【发布时间】:2014-04-18 08:33:19
【问题描述】:

这似乎很简单,但我无法管理 ajax post vor 验证。

通过 Ajax 帖子,我将数据发送到验证操作。到目前为止一切顺利。

下一步是返回单个值。这是问题所在。我的操作没有返回值。

这里是动作

public function solveEquationAction(){
    $riddle = new Question();
    $request = $this->getRequest()->getPost()->get('equation');
    return $riddle->solveEquation($request);
} 

这是我的 ajax 帖子

function validateAnswer(answer){
    var equation = jQuery('#riddleAnswer').text();

    $.ajax({
        url : '/riddle/solveequation',
        type: 'POST',
        data: {'equation': equation},
        success:function(data, textStatus, jqXHR) 
        {
            console.log(data);
        },
    //...
    });
}

我需要该操作仅返回已求解的方程,以便我可以在我的 ajax 帖子的成功部分中检查它

提前致谢

【问题讨论】:

  • return 切换为echoprint :)
  • 您的操作确实具有 return 值,但如果您想将其作为 ajax 响应获取,您需要改为 echo
  • 我已经试过了。 console.log(data) 仍然打印出完整的 HTML 代码,而不仅仅是我需要的值。

标签: php ajax zend-framework2


【解决方案1】:

你最好在这里使用ViewJsonStrategy

public function indexAction()
{
   $riddle = new Question();
   $request = $this->getRequest()->getPost()->get('equation');

   return new \Zend\View\Model\JsonModel(array(
       'result'  => $riddle->solveEquation($request),
       'success' => true
   ));
}

Read more.

【讨论】:

  • 用 jsonmodel 也试过了。导致致命错误:找不到类 Zend\ViewModel\JsonModel
  • 你需要在命名空间之后和类之前的顶部添加这行use Zend\View\Model\JsonModel;
  • +1 @wurmi 命名空间有一个缺失的`\`,现在已经更正了;这是你应该使用的方法
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-12-07
  • 2019-03-15
  • 2017-12-17
  • 2016-12-12
  • 2017-02-28
  • 2013-03-21
  • 1970-01-01
相关资源
最近更新 更多