无法使用Phalcon获取ajax responseText

时间:2015-07-29 13:43:06

标签: php ajax phalcon

我想拨打ajax并显示其回复:

<script type="text/javascript">
function test() {
    var pk = $('#salle_code').val();
    var donne = {pk:pk};
    var ret = $.ajax({
            data: donne,
            type: "POST",
            url:  "<?php echo HTTP_AJAX ?>salle/testAjax.php",
            async: false
         }).responseText;
    return $.trim(ret);
}
$(document).ready(function(){
    $('#salle_code').on("blur", function() {
        if ($('#salle_code').val() != "") {
            alert(""+test());
        }
    });
});
</script>

ajax的代码:

<?php
$critere = array();
$critere['salle_code'] = $_POST['pk'];
$ret = Salle::lireParCritere($critere);
echo "111111111111111";
?>

在运行时,警报显示空白结果!那么如何使用Phalcon和ajax以及模型?

3 个答案:

答案 0 :(得分:2)

使用以下代码并检查浏览器控制台以获取响应

 $.ajax({
    data: donne,
    type: "POST",
    url:  "<?php echo HTTP_AJAX ?>salle/testAjax.php",
    async: false
    success: function (data) {
        console.log(data)
    },
    error: function (textStatus, errorThrown) {
       console.log(textStatus + " : " + errorThrown)
    }
 });

答案 1 :(得分:1)

首先,您需要为AJAX请求定义路由,例如/salle/test

$router->add('/salle/test', [
    'controller' => 'salle',
    'action' => 'test',
))->beforeMatch(function ($uri, $route) {
    if ($_SERVER['HTTP_X_REQUESTED_WITH'] == 'xmlhttprequest') {
        return false;
    }
    return true;
});

然后创建你的行动:

public function testAction()
{
    // some work ..

    $this->response->setJsonContent(json_encode(['foo' => 'bar']));
    return $this->response;
}

然后测试:

<script src="//code.jquery.com/jquery-1.11.3.min.js"></script>
<script type="text/javascript">
    function test() {
        var response = $.ajax({
            type: "POST",
            data: {},
            url: '/salle/test',
            success:function(results) {
                console.log(results);
            }
        });

        return response;
    }
    $(document).ready(function(){
        console.log(test());
    });
</script>

答案 2 :(得分:0)

@Klay有一个非常简单的解决方案:我在实际视图的控制器内创建了一个ajax动作。