这个ajax帖子是否正确?

时间:2012-06-25 16:43:12

标签: javascript ajax cakephp

我试图向我的CakePHP动作发布一个变量数组,以便我可以编辑它们。该数组是根据表行的ID构建的。这是我的index.ctp文件中的javascript代码。

<script type="text/javascript">
$('.edit_selected').click(function()
{
    var selected = new Array();
    alert('Edit Selected Has Been Clicked');
    $("#[id*=LocalClocks]").each(function()
    {
        if(false != $(this).is(':checked'))
        {
            selected.push($(this).attr('id').replace('LocalClocks', ''));
            $.ajax({
            type: 'POST',
            url: "/localhost/LocalClocks/editSelected/",
            data: JSON.stringify(selected),
            dataType: "json",
            success: function(data){ alert(data); alert('Edit Success'); }
            });
        }
    });
});
</script>

我在这里做的是抓住所有以'LocalClocks'开头的ID,然后我正在修剪'LocalClock'字符串,所以我最终只得到数字,然后我将该ID添加到选中的数组。我想将此数组发布到我的editSelected()函数。

我对发布数据一点都不熟悉,所以我有几个问题。到目前为止,我目前的代码是否正确? 对于我的editSelected()函数,它是否需要我尝试传递的数组的参数,或者发布的数据是否已放入$this->request->data

以下是我的editSelected操作:

public function editSelected()
{
    $this->set('isEditSelValid', false);
    $this->set('editSelValidationErrors', false);
    if ($this->request->is('post'))
    {
        $localClocksEntries = $this->LocalClock->find('all');
        foreach($localClocksEntries as $LocalClock)
        {
            $this->LocalClock->id = $LocalClock['LocalClock']['id'];
            $this->LocalClock->save($this->request->data);
            $this->set('isEditSelValid', true);
            $this->set('editSelValidationErrors', false);
        }
    }
}

我尝试发布数据的原因是因为我需要能够获取要编辑的行的ID。我在上面的javascript能够获取并放入数组的每一行都有复选框。我需要能够循环该数组并将用户输入保存到它们。

1 个答案:

答案 0 :(得分:1)

如果服务器端代码接受JSON,则需要将contentType: "application/json"添加到传递给ajax方法的文字对象中。现在它正以默认application/x-www-form-urlencoded发送。除此之外你的代码看起来很健康。

datatType用于返回数据,contentType是您的请求数据的传递方式。

相关问题