Javascript中的JSON出错:JSON数据后出现意外的非空白字符

时间:2011-11-01 19:56:15

标签: php javascript ajax json zend-framework

我的问题是我在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行。当我注意到这一点时,我下载了最新版本,并没有改变。

2 个答案:

答案 0 :(得分:1)

jQuery对JSON数据有相当严格的设置。您是否已尝试验证您的JSON,例如JSONLint

答案 1 :(得分:1)

您可以在发送之前修剪最终字符串吗?如果不是这种情况,请确保它没有字节顺序标记进行编码,特别是如果您使用UTF-8的Dream weaver。