Cakephp 2.0 Ajax发布的数据没有显示在控制器中?

时间:2016-08-01 14:46:09

标签: ajax cakephp controller default

我正在使用cakephp网络应用程序,我在Ajax function中创建了一个小default ctp file。现在设置文件我想将值数据发送到另一个控制器函数,在chrome browser network中显示Ajax发布到欲望url但在控制器后期值中没有显示当我尝试回显$_post ['selectedlocation']时??

Ajax默认文件

var DisplayLocationName = $('#ListingLocation option:selected').val();

$.ajax({
     type: "POST",
     url: '/listings/home',
     data: {selectedlocation:DisplayLocationName },
     dataType:"text",
     success: function(result) {

     }
     });

列出控制器功能

function home()
{

    if(!isset($this->params['requested']) || $this->params['requested'] != true)
    {
        $this->actionId = 'home';
    }

    $this->viewFile = null;

    if($this->params['isAjax'] &&  isset($_POST['selectedlocation'])) 
    {

            echo "erreerreer";
            echo $selectloc= $_POST['selectedlocation'];
            $this->set('selectloc',$selectloc); 

    }

}

如何在默认情况下显示Ajax post值以进行测试,确保Ajax向控制器发布正确的值

2 个答案:

答案 0 :(得分:0)

您需要使用日志文件来读取帖子数据。这会将数据写入错误日志,您可以在那里查看。

@ViewBag.UserName = string.Empty
<table>
    <tr>
        <th>
            Username
        </th>
    </tr>

    @foreach (var x in Model.Evaluation.OrderBy(x => x.User.UserName)
    {
    <tr>
        <td>
            @(ViewBag.UserName == x.User.UserName ? null : Html.DisplayFor(modelItem => x.User.UserName))
            @(ViewBag.UserName = x.User.UserName)
        </td>

        <td>
            @Html.DisplayFor(modelItem => x.Component.NameComp)
        </td>

        <td>
            @Html.DisplayFor(modelItem => x.Grade)
        </td>
        <td></td>
    </tr>
    }
</table>

答案 1 :(得分:-1)

如果要从ajax请求中获取$ _POST数据,则应使用:

$form_data = $this->request->data; (cakephp 2.x)
$form_data = $this->params['form'] (cakephp 1.3)

现在你有了一个带有$ _POSTed数据的数组,如果你愿意,可以尝试使用var_dump()来理解它的结构。