我试图使jQuery自动完成,雅虎金融和Zend一起工作。
我想要的是创建一个表单字段,在其中我可以通过Yahoo自动完成代码。
我已经创建了一个包含以下内容的Zend_From元素:
$this->setJQueryParam('source', new Zend_Json_Expr('function( request, response ) {
$.ajax({
type: "GET",
dataType: "jsonp",
jsonp: "callback",
jsonpCallback: "YAHOO.Finance.SymbolSuggest.ssCallback",
data: {
query: request.term
},
cache: true,
url: "http://autoc.finance.yahoo.com/autoc";
}
});
}'));
$this->getView()->jQuery()->addJavascript('var YAHOO={Finance:{SymbolSuggest:{}}};');
$this->getView()->jQuery()->addOnLoad('YAHOO.Finance.SymbolSuggest.ssCallback = function (data) {
console.log(JSON.stringify(data)); }');
我发现this post解决了我的部分问题,但我认为使用var YAHOO={Finance:{SymbolSuggest:{}}};
是一种肮脏的伎俩,不是正确的方法。
现在,如果我在字段中输入GOO,那么firebug控制台将向我展示如下内容:
{“ResultSet”:{“ResultSet”:“goo”,“ResultSet”:[{“符号”:“GOOG”,“ResultSet公司”:“Google Inc.","exch":"NMS","type":"S","exchDisp":"NASDAQ",”typeDisp“:”公平“},{”符号“:”GT“,”name“:”固特异轮胎和橡胶公司“,"exch":"NYQ","type":"S",”exchDisp“:”S“,“typeDisp”:“公平”}
这很好,但我不知道如何从这个回调函数中将这些数据发送回自动完成,知道吗?
发布于 2012-02-08 23:01:07
我终于找到了一个解决方案,但我仍然在使用YAHOO名称空间。
我首先删除了最后一行(addOnLoad),并在Ajax请求之后将其内容移动,这样我仍然可以进入自动完成函数,并且可以将结果返回给autocomplete。
以下是最终代码:
$this->setJQueryParam('source', new Zend_Json_Expr('function( request, response ) {
$.ajax({
type: "GET",
dataType: "jsonp",
jsonp: "callback",
jsonpCallback: "YAHOO.Finance.SymbolSuggest.ssCallback",
data: {
query: request.term
},
cache: true,
url: "http://autoc.finance.yahoo.com/autoc";
}
});
YAHOO.Finance.SymbolSuggest.ssCallback = function (data) {
console.log(data.ResultSet.Result);
response( $.map( data.ResultSet.Result, function( item ) {
return {
label: item.symbol,
value: item.name
}
}))
}
}'));
$this->getView()->jQuery()->addJavascript('var YAHOO={Finance:{SymbolSuggest:{}}};');
希望能帮上忙!
发布于 2012-03-21 21:52:14
Liyali,谢谢你弄明白了,并发布了代码。我只是想在jquery自动完成的上下文中提供js:
$("#txtTicker").autocomplete({
source: function (request, response) {
$.ajax({
type: "GET",
dataType: "jsonp",
jsonp: "callback",
jsonpCallback: "YAHOO.Finance.SymbolSuggest.ssCallback",
data: {
query: request.term
},
cache: true,
url: "http://autoc.finance.yahoo.com/autoc"
});
YAHOO.Finance.SymbolSuggest.ssCallback = function (data) {
response($.map(data.ResultSet.Result, function (item) {
return {
label: item.name,
value: item.symbol
}
}));
}
},
minLength: 1,
select: function (event, ui) {
$("#txtTicker").val(ui.item.name);
},
open: function () {
$(this).removeClass("ui-corner-all").addClass("ui-corner-top");
},
close: function () {
$(this).removeClass("ui-corner-top").addClass("ui-corner-all");
}
});
https://stackoverflow.com/questions/9191920
复制相似问题