我正在尝试通过dojo.xhrPost将一些数据发送到Zend Controller Action。我可以在Firebug控制台中看到正在发送的数据。但是,在检查发布数据时,数组为空。
我不确定是否可以通过dojo.xhrPost发送任意数据串而不使用表单。这可能是一个非常错误的错误。无论如何,我会在这里发布我的代码,看看你们都在想什么。
在我的布局脚本中,我有:
<?php
$sizeurl = $this->baseUrl() . '/account/uisize';
?>
function resizeText(multiplier)
{
if (document.body.style.fontSize == "")
{
document.body.style.fontSize = "1.0em";
}
document.body.style.fontSize = parseFloat(document.body.style.fontSize) + (multiplier * 0.1) + "em";
var size = document.body.style.fontSize;
var xhrArgs = {
url: "<?= $sizeurl; ?>",
postData: size,
handleAs: "text"
}
dojo.xhrPost(xhrArgs);
}
然后我的行动是:
public function uisizeAction()
{
$this->_helper->viewRenderer->setNoRender();
$this->_helper->layout->disableLayout();
print_r($_POST);
$request = $this->getRequest();
if ($request->isXmlHttpRequest())
{
$postdata = $request->getPost();
print_r($postdata);
if ($postdata)
{
$user = new Application_Model_DbTable_User();
$user->updateSize($postdata);
}
}
}
我很确定表单中的发布数据是一个数组,其中表单元素的名称作为键。在dojo校园网站上查看dojo.xhrPost示例时(确切地说是http://docs.dojocampus.org/dojo/xhrPost第二个),看起来好像我只能发送一串数据。如何从Zend Controller Action访问此数据?
我正在使用ZF 1.10和Dojo 1.4.2
感谢您的帮助!
PS 我试着询问其中一个相关问题,但我似乎无法发表评论。
答案 0 :(得分:0)
在这里阅读了http方法之后: http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html
我认为我需要对以PHP转换为数组的方式发送的数据进行编码。所以这里是新的javascript:
function resizeText(multiplier)
{
if (document.body.style.fontSize == "")
{
document.body.style.fontSize = "1.0em";
}
document.body.style.fontSize = parseFloat(document.body.style.fontSize) + (multiplier * 0.1) + "em";
var rawdata = "uisize="+document.body.style.fontSize;
var xhrArgs = {
url: "<?= $sizeurl; ?>",
postData: rawdata,
handleAs: "text"
}
//Call the asynchronous xhrPost
dojo.xhrPost(xhrArgs);
}
不同之处在于我现在指定一个密钥对并发送它。使用AJAX时可能会使表单过度杀伤。所以现在我的UI被调整大小,大小与用户的个人资料一起存储。所以他们要求的下一页将使用他们设置的大小。凉。