我的问题是我在javascript函数中使用jQuery.ajax时遇到的错误。我搜索并发现了类似的问题,但这些问题都没有帮助我。
所以,真正奇怪的是它之前的工作。我花了几天时间研究UTF-8的翻译问题,当我再次尝试它时,它已经工作了。我看不到发生了什么,所以也许你可以帮我找出来。
以下是我的控制器操作中为ajax调用的代码。
$project =$_GET['project'];
//Call private function getQuota
$quotaTab = $this->getQuota($project);
$this->_helper->getHelper('viewRenderer')->setNoRender();
Zend_Layout::getMvcInstance()->disableLayout();
// Encode data to return
$return = array(
'quota' => $quotaTab[0],
'usedSpace' => $quotaTab[1],
'usedPercentage' => $quotaTab[2]
);
$return = Zend_Json::encode($return);
$this->getResponse()->setBody($return);
这是我的包含ajax函数的javascript函数
function changeQuota() {
var fileset = document.getElementById('fileset');
jQuery.ajax({
url: '/filesets/quota/',
data: ({ project: fileset.value, ajaxCall: true}),
success: function(response) {
//Decode the JSON response
var result = response.evalJSON();
// Set the new value of current quota
$('currentQuota').value = result.quota;
var strUsed = <?php echo "' ".$this->translate("used")."'";?>;
$('usedQuota').innerHTML = result.usedPercentage.concat(strUsed);
var suggestQuota = Math.round(parseFloat(result.quota) + parseFloat(result.quota/10));
$('quota').value = suggestQuota;
$('usedSpace').value = Math.round(result.usedSpace);
}
});
}
所以我用Firebug调试我的脚本,它返回的确切错误是
“JSON.parse:JSON数据后出现意外的非空格字符
返回JSON.parse(json); prototype.js(第720行)“
当我使用jQuery.ajax时,我在这两个函数中都有这个错误。尝试使用evalJSON()时会发生错误。
知道为什么它不再起作用了吗?可能是因为文件的编码(目前是UTF-8)?
提前感谢您的帮助!
P.S。也许它没有链接,但是当我用Zend Studio打开prototype.js时,我有一些警告和2个错误(第4235行“缺少分号”和“令牌上的语法错误”,“,预期”在第4000行。当我注意到这一点时,我下载了最新版本,并没有改变。
答案 0 :(得分:1)
jQuery对JSON数据有相当严格的设置。您是否已尝试验证您的JSON,例如JSONLint
答案 1 :(得分:1)
您可以在发送之前修剪最终字符串吗?如果不是这种情况,请确保它没有字节顺序标记进行编码,特别是如果您使用UTF-8的Dream weaver。