Jquery JSON到数组和搜索&;在阵列内部进行替换
我有一个用于jQuery自动完成输入字段的小回调函数。 该函数有两个参数:输入字段中键入的term=字符串和url=生成建议的php脚本的url 剧本是这样的:Jquery JSON到数组和搜索&;在阵列内部进行替换,jquery,json,jquery-ui,replace,jquery-ui-autocomplete,Jquery,Json,Jquery Ui,Replace,Jquery Ui Autocomplete,我有一个用于jQuery自动完成输入字段的小回调函数。 该函数有两个参数:输入字段中键入的term=字符串和url=生成建议的php脚本的url 剧本是这样的: function m(term,url) { var y = ''; jQuery.get(url, { term:term }, function(data){ }); return y; } 您在文本字段中键入的所有内容都将发送到php脚本,该脚本将返回一个建议列表 在函数(数据){}块中,应该发生两件事: 将J
function m(term,url) {
var y = '';
jQuery.get(url, { term:term }, function(data){ });
return y;
}
您在文本字段中键入的所有内容都将发送到php脚本,该脚本将返回一个建议列表
在函数(数据){}
块中,应该发生两件事:
y=eval(“+data+”)代码>。是这样吗?
从PHP端生成的JSON字符串如下所示(例如term=“nur”)
[“努里·马利基”、“努尔苏丹·纳萨尔巴乔夫”、“n\u00fcrnberger prozess”]
n\u00fcrnberger是“nürnberger”的编码版本
sunrise
.replace
的内容用于数组
应用程序是在Yii框架下运行的,所以我想找到一个解决方案。有人说eval是邪恶的,你不需要将sting解析成json就可以使用 请再看
有关格式,请参见@DarthJDG提供的据说eval是邪恶的,您不需要将sting解析为json,只需使用即可 请再看
有关格式设置,请参见@DarthJDG提供的,您可以通过以下方式定义接收到的字符串为JSON格式:
jQuery.get(url, { term:term }, function(data){ }, "json");
然后在回调函数中,检查接收到的项目,并用包装版本替换找到的字符串:
for (i=0, iLen=data.length; i<iLen; i++) {
data[i] = data[i].replace(new RegExp(term), "<b>$1</b>");
}
for(i=0,iLen=data.length;i您可以通过以下方式定义接收到的字符串为JSON格式:
jQuery.get(url, { term:term }, function(data){ }, "json");
然后在回调函数中,检查接收到的项目,并用包装版本替换找到的字符串:
for (i=0, iLen=data.length; i<iLen; i++) {
data[i] = data[i].replace(new RegExp(term), "<b>$1</b>");
}
for(i=0,iLen=data.length;i我尝试了来自DarthJDG的链接,并按照此SO问题:
我想是因为对Javascript/Jquery/的了解不够……我无法将该解决方案应用到我的应用程序中。我一直遇到错误“$.ui未定义”。
(对我来说)面临的挑战是:将代码与我使用的Yii框架组合放置在何处
所以我得到了Yii论坛的帮助,我想在这里发布明确的解决方案
您只需注册以下脚本。在POS_加载时注册该脚本非常重要:
Yii::app()->clientScript->registerScript('highlightAC','$.ui.autocomplete.prototype._renderItem = function (ul, item) {
item.label = item.label.replace(new RegExp("(?![^&;]+;)(?!<[^<>]*)(" + $.ui.autocomplete.escapeRegex(this.term) + ")(?![^<>]*>)(?![^&;]+;)", "gi"), "<strong>$1</strong>");
return $("<li></li>")
.data("item.autocomplete", item)
.append("<a>" + item.label + "</a>")
.appendTo(ul);
};',CClientScript::POS_LOAD);
Yii::app()->clientScript->registerScript('highlightAC','$.ui.autocomplete.prototype.\u renderItem=function(ul,item){
item.label=item.label.replace(新的RegExp((?![^&;]+;)(?!)(?![^&;]+;),“gi”),“$1”;
返回$(“”)
.data(“item.autocomplete”,item)
.append(“+item.label+”)
.附录(ul);
},CClientScript::POS_LOAD);
就这样。
(感谢Yii论坛的Antonio)我尝试了DarthJDG的链接,然后回答了这个问题:
我想是因为对Javascript/Jquery/的了解不够……我无法将该解决方案应用到我的应用程序中。我一直遇到错误“$.ui未定义”。
(对我来说)面临的挑战是:将代码与我使用的Yii框架组合放置在何处
所以我得到了Yii论坛的帮助,我想在这里发布明确的解决方案
您只需注册以下脚本。在POS_加载时注册该脚本非常重要:
Yii::app()->clientScript->registerScript('highlightAC','$.ui.autocomplete.prototype._renderItem = function (ul, item) {
item.label = item.label.replace(new RegExp("(?![^&;]+;)(?!<[^<>]*)(" + $.ui.autocomplete.escapeRegex(this.term) + ")(?![^<>]*>)(?![^&;]+;)", "gi"), "<strong>$1</strong>");
return $("<li></li>")
.data("item.autocomplete", item)
.append("<a>" + item.label + "</a>")
.appendTo(ul);
};',CClientScript::POS_LOAD);
Yii::app()->clientScript->registerScript('highlightAC','$.ui.autocomplete.prototype.\u renderItem=function(ul,item){
item.label=item.label.replace(新的RegExp((?![^&;]+;)(?!)(?![^&;]+;),“gi”),“$1”;
返回$(“”)
.data(“item.autocomplete”,item)
.append(“+item.label+”)
.附录(ul);
},CClientScript::POS_LOAD);
就这样。
(感谢Yii论坛的Antonio)我不知道如何完整地回答您的问题(没有使用jQuery UI的经验),但是对于您的第一个问题…不要使用eval
,使用@Zirak有趣的信息,谢谢!您也可以使用$.getJSON()
。这似乎是最简单的方法。我不知道如何完全回答您的问题(没有使用jQuery UI的经验),但对于您的第一个问题…不要使用eval
,使用@Zirak有趣的信息,谢谢!您也可以使用$.getJSON()
。这似乎是最简单的方法。+1对于RTFM,您还可以查看以下自定义格式的SO问题:我仍然在PHP端使用json_encode。我使用yii框架中的CJSON::encode。@Bndr可能您的json不正确?下面是另一个使用jsonp的示例,请注意,在bac中,它们不需要解析json当然可以,但我从PHP端收到的JSON看起来是这样的(例如term=“nur”)[“nuri al-maliki”、“nursultan nasarbajew”、“n\u00fcrnberger prozess”]。我认为这看起来不错。@DarthJDG,所以链接我也是一个有趣的方式。我对jQuery/JS非常陌生。要实现这个想法,我只需调用函数monkyPatchAutocomplete?但我得到一个错误,“$.ui.未定义”我认为,我缺少一些基本知识。对不起。+1到RTFM,您还可以看看以下自定义格式的SO问题:我仍然在PHP端使用json_encode。我使用yii框架中的CJSON::encode。@Bndr可能您的json不正确?这里是另一个使用jsonp的示例,请注意,它们不需要PARjson返回时不确定,但我从PHP端收到的json看起来是这样的(例如term=“nur”)[“nuri al-maliki”、“nursultan nasarbajew”、“n\u00fcrnberger prozess”]。我认为这看起来不错。@DarthJDG