1

在我的 Yii 网站中,我使用 jQuery ajax 从 Amazon AWS 服务中提取一些数据。除了 ajax 响应外,一切正常。在我的控制器操作中,我从亚马逊获取数据,如下所示:

$jdata = $this->amazonProxyRequest();

之后,$jdata包含我需要的所有数据的关联数组行。

例如,我现在需要提取第一行并将其“回显”为 ajax json 响应。我愿意:

$jt_data = CJSON::encode($jdata[0]);

$jt_vata变量现在包含一个有效的 JSON,根据调试器,我正在粘贴,它是

"{"id":"1","author":"Leo Tolstoy","title":"War and Peace (Cambridge World Classics) Critical Edition (Annotated) (Complete Works of Leo Tolstoy \/ Complete Works of Leo Tolstoi)","publisher":"Cambridge World Classics","isbn":"","year_published":"2010-11-30"}"

到目前为止,一切都很好。然后在我看来,我想使用这些数据。data仅出于测试目的,我要求“成功”选项使用我已传递给该方法的变量触发警报。

'onblur'=> CHtml::ajax(array(
     'url'=>Yii::app()->createUrl('book/searchAmazon'),
     'type'=>'post',                                                        
     //'dataType'=>'json',
     'data'=>array('title' => 'js:this.value'),
     'success' => "js:function(data)
                {
                   alert(data);
                }",
     'error' => "function(data, status){ alert(status); }",
 ))

如果我取消注释,'dataType'=>'json'我会得到一个parsererror,我知道为什么。函数中的data变量确实包含我的 JSON 数据,但之前附加的亚马逊网络服务还有一个非常巨大的 GET 请求字符串。所以显示包含的警报successalert(data)

http://ecs.amazonaws.com/onca/xml?AWSAccessKeyId=MyAccessKey&AssoSignature=
... etc ...
DrJzWb73c08V5yffKUkFOu63Y4w%2FtIEc%2FtlVVjBKrUY%3D{"id":"1","author":
"Leo Tolstoy","title":"War and Peace (Cambridge World Classics) 
Critical Edition (Annotated) (Complete Works of Leo Tolstoy \/ Complete Works of Leo
Tolstoi)","publisher":"Cambridge World Classics","isbn":"","year_published":
"2010-11- 30"}

即使我不做

echo CJSON::encode($jdata[0]); 

在控制器中,我仍然在警报中获得 GET 字符串,但没有附加任何 JSON。摆脱长字符串的唯一方法是评论

$jdata = $this->amazonProxyRequest();

这当然是不可接受的。

问题:

如果您告诉我此链接来自哪里,我将不胜感激?

我试图自己解决这个问题,但我没有成功。

4

0 回答 0