PHP(CakePHP) - 通过JavaScript识别创建的表单元素

时间:2014-01-21 19:47:14

标签: javascript php html cakephp

我正在开发CakePHP应用程序。在我的应用程序中,页面有一个表单标签,里面没有元素。表单元素(输入等)是使用JavaScript动态创建的。因此,在某些特定事件之后,我创建了所需的元素并将它们附加到父节点。结果是一个包含元素的表单。

for (var i = 0; i < targets.length ; i++) {
        var edt = document.createElement("input");
        edt.setAttribute("type","text");
        edt.setAttribute("id","edt_"+targets[i].id);
        edt.setAttribute("name","edt_"+targets[i].id);
        targets[i].innerHTML = "";
        targets[i].appendChild(edt);
        //Pushing newly created obj to array
        objs.push(edt);
    }

CakePHP无法使用以下方法处理新创建的元素:

$global_1_user = $this->request->data['edt_1_user'];
$this->set('global_1_user',$global_1_user);

但是,如果我不动态创建元素并将它们放在我的HTML代码中,那么CakePHP可以很好地识别元素。有人可以帮我这个吗?为什么会这样?我该如何克服这个问题?有没有其他方法可以达到这个目的?

2 个答案:

答案 0 :(得分:3)

您误解了PHP和JavaScript的工作原理。 PHP代码永远不会“看到”JavaScript代码(包括jQuery)的结果,因为PHP在服务器上运行,而JavaScript在浏览器中运行。当JavaScript开始运行时,服务器就完成了PHP。

如果你真的需要在JavaScript运行之后使用PHP来做某事,你可以用AJAX来做。

答案 1 :(得分:0)

出于某种原因,问题与:

有关
objs.push(edt);

如果我不推动元素(只是注释掉行),那么它工作正常。有谁知道这背后的技术原因?