0

我正在使用这个简单的PHP框架,在与其他人有些不安之后自定义 PHP

我有以下控制器:

<?php

class TestController extends BaseController
{

    public function __construct($action, $urlValues) {
        parent::__construct($action, $urlValues);
    }

    public function deploy_test() {
        echo json_encode("helloworld");
    }
}
?>

该函数由一个.js名为的函数激活test()

function test()
{

    var data = {
        config   : $("#config").val(),
        machines : $("#machines").val(),
        test     : $("#test").val(),
        product  : $("#product").val(),
    };

    $.post('./index.php/test/deploy_test/', data, 
    function( answer ){
        create_bar();
        console.log( answer );
    });
}

但是,我得到的是index.php页面html本身,而不是"helloworld"预期的字符串。我不知道是怎么回事。有人可以取悦我吗?输出是:

<!DOCTYPE html>
<html>
<head>
<title>Deployer</title>
</head>
<body>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
4

2 回答 2

0

在 JS 中的 POST 中指定返回类型: dataType: json

http://api.jquery.com/jQuery.post/

于 2013-03-06T20:13:53.527 回答
0

您需要在发送之前在服务器端设置正确的标头信息,json_encode("helloworld")以便 ajax 在读取答案之前可以预期 json 值。例如第一行可能是:

header('Cache-Control: no-cache, must-revalidate'); // no cache
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
header('Content-type: application/json'); // json type

您还需要像 David 建议的那样添加dataType: json您的 ajax 请求。

于 2013-03-06T20:29:55.593 回答