如何更好地清理此代码?
问题描述:
我有一个脚本插入到Magento中,它似乎没有正常工作。每当它运行时,它实际上将html文档的内容送回到文本框中而不是自动提示。谁能告诉我这个问题似乎是什么?我认为这可能是两种功能冲突,有没有一种很好的方法来清理它?如何更好地清理此代码?
<script type="text/javascript" src="jquery-2.1.1.js"></script>
<script type="text/javascript" src="jquery.autocomplete.js"></script>
<script type="text/javascript" >
//<![CDATA[
$j = jQuery.noConflict();
$j(document).ready(function(){
$j("#antique_toys_materials").keyup
(function()
{
var tag= $j(this).val();
if(tag!='')
{
$j.ajax(
{
type: "GET",
url: "autocomplete.php",
data: "q=" + tag,
cache: true,
success: function(result)
{
$j("#antique_toys_materials").val(result);
}
}
);
}
return false;
}
);
}
);
//]]>
</script>
<script type="text/javascript" >
//<![CDATA[
$j = jQuery.noConflict();
$j(window).load(function(){
function calculate()
{
var values = [
$j("#cost").val(),
$j("#shipping_paid").val(),
$j("#tax_paid").val()
];
var percent_value = $j("#our_markup").val();
//---------------------------//
if (percent_value == 285)
{
var percent_value = 0;
}
var sub_total = eval(values.join('+'));
var total = eval("sub_total+(sub_total * percent_value)");
var shortened_total = total.toFixed(2);
$j("#price").val(shortened_total);
}
$j(document).ready(function() {
$j(document).on('input', 'input', calculate);
$j(document).on('change', 'select,input', calculate);
});
});
//]]>
</script>
,并与钩了这个
<?php
$q=$_GET['q'];
$my_data=mysql_real_escape_string($q);
$mysqli=mysqli_connect('localhost','XXXXXXX','XXXXXXX','XXXXXXX') or die("Database Error");
$sql = "SELECT DISTINCT auto_complete_suggestions FROM auto_complete WHERE auto_complete_suggestions LIKE '%$my_data%'
ORDER BY CASE WHEN auto_complete_suggestions = '$mydata' THEN 0
WHEN auto_complete_suggestions LIKE '$mydata%' THEN 1
WHEN auto_complete_suggestions LIKE '%$mydata%' THEN 2
WHEN auto_complete_suggestions LIKE '%$mydata' THEN 3
ELSE 4
END, auto_complete_suggestions LIMIT 0,1";
$result = mysqli_query($mysqli,$sql) or die(mysqli_error());
if($result)
{
while($row=mysqli_fetch_array($result))
{
echo $row['auto_complete_suggestions']."\n";
}
}
?>
它工作正常,孤立而不noConflict但后来当我把它在Magento似乎需要一些帮助,我敢肯定,因为它是反馈给它的HTML文件,有什么不对。 想法?谢谢!
答
这只是一个快速猜测,但尝试使用单词“jQuery”而不是“$”。因为它也使用了“$”,所以我不得不更改一些干扰原型的插件脚本。一旦我用jQuery替换了$的所有实例,事情就开始按照我的预期工作。
+0
谢谢你的建议!其实已经尝试过了。 – new2programming 2014-11-03 14:55:29
如果你正在构建的东西将会被公开发布......请先了解更多关于开发Magento平台的信息。目前这个代码真的有很多错误... – 2014-11-03 17:27:56
好的。感觉像帮助我学习?我能做得更好吗? – new2programming 2014-11-03 17:50:34
好吧,你应该在你自己的模块中完成所有这些工作,你应该从你的模块布局文件中添加所有的JS,你应该严格地使用prototype而不是jquery,因为这是Magento的核心JS框架,你应该使用Magento的方法访问数据库,绝对不要直接使用PHP方法或编写原始SQL。 Magento是一个功能强大,功能强大的MVC框架,虽然它具有非常陡峭的学习曲线,但如果你对它有所了解,你将真正拥有宝贵的技能。 SO和SE都是学习它的好地方! – 2014-11-03 18:01:35