我正在努力实现一个JQuery脚本,允许人们进入他们的汽车牌照,然后返回一个合适的配件列表(主要是牵引杆)。然后人们可以继续订购其中一根牵引杆,订单将直接发送给我们的供应商。
我让脚本在测试页面上运行,但是在将脚本复制粘贴到客户可以找到它的页面上之后,它突然不再起作用了。我花了5个多小时试图找出原因,但我找不到它。
带有工作脚本的页面是:http://www.potgieter.nl/testpage/,它应该去的页面(但是不起作用)是http://www.potgieter.nl/trekhaken页面是荷兰语,但代码显然不是
脚本本身是:
<script src="http://www.trekhaken.nl/thirdparty/script.js" type="text/javascript"></script>
^进入头部
和
<div id="timer" class="noprint">
<div id="heading">Een momentje alsjeblieft…. <span id="seconds"></span></div>
<div id="contenttimer">
<p>wij zoeken momenteel je auto gegevens op, alsmede de bijpassende trekhaken en kabelsets.</p></div>
</div>
<div class="container">
<form id="searchForm" action="/" name="searchForm">
<p class="nomarge"><input id="kentekennormaal" class="kentekenheader" name="kenteken" size="10" type="text" value="" /><br />
<!-- klantnaam opgegeven door trekhaken.nl --><br />
<input id="klantnaam" name="klantnaam" type="hidden" value="potgieter" /><br />
<!-- // einde klantnaam --><br />
<button class="normaal" type="submit">zoek</button><br />
<!-- zoekmethode niet wijzigen --><br />
<input id="strZoekmethode" name="strZoekmethode" type="hidden" value="kenteken" /><br />
<!-- // einde zoekmethode --></p>
</form>
<p><!-- the result of the search will be rendered inside this div MUST STAY HERE --></p>
<div id="result"></div>
<p><!-- // end result info --><br />
<!-- script functions needed for cross domain info please dont touch ;-) --><br />
<script>// <![CDATA[
$("#searchForm").submit(function(event){event.preventDefault();$("#result").html('');var data=$("#searchForm").serialize();$.ajax({url:'http://www.trekhaken.nl/thirdparty/kenteken.php',type:"GET",crossDomain:true,data:data}).done(function(data){$("#result").html(data)})});function ganaarbestelling(){var data=$("#productform").serialize();$.ajax({url:'http://www.trekhaken.nl/thirdparty/bestelling.php',type:"GET",crossDomain:true,data:data}).done(function(data){$("#result").html(data)})}function maakbestelling(){var data=$("#bestelform").serialize();$.ajax({url:'http://www.trekhaken.nl/thirdparty/bestelling.php',type:"GET",crossDomain:true,data:data}).done(function(data){$("#result").html(data)})}function meeruitvoeringen(){var data=$("#productform").serialize();$.ajax({url:'http://www.trekhaken.nl/thirdparty/kenteken.php',type:"GET",crossDomain:true,data:data}).done(function(data){$("#result").html(data)})}function merkmodel() { var data = $("#searchForm").serialize();$.ajax({url:'http://www.trekhaken.nl/thirdparty/merkmodel.php',type: "GET",crossDomain: true,data: data}).done(function(data){$("#result").html(data);});}function merkmodelselectie(){var data=$("#merkmodelform").serialize();$.ajax({url:'http://www.trekhaken.nl/thirdparty/merkmodel.php',type:"GET",crossDomain:true,data:data}).done(function(data){$("#result").html(data)})}function merkgekozen(){var data=$("#merkmodelform").serialize();$.ajax({url:'http://www.trekhaken.nl/thirdparty/kenteken.php',type:"GET",crossDomain:true,data:data}).done(function(data){$("#result").html(data)})}
// ]]></script>
<!-- // end needed cross domain js functions --></div>
^进入页面主体。
车牌号可输入黄色框(荷兰车牌号为黄色)。在某个地方可能存在一个非常明显的错误,但是我已经盯着它看了很久,所有这一切都开始模糊起来。任何帮助将不胜感激!
使用下面的提示和提示,我修改了代码,现在看起来像这样:
<!-- start script -->
<div id="timer" class="noprint">
<div id="heading">Een momentje alsjeblieft.... <span id="seconds"></span></div>
<div id="contenttimer">
wij zoeken momenteel je auto gegevens op, alsmede de bijpassende trekhaken en kabelsets.</div>
</div>
<div class="container"><form id="searchForm" action="/" name="searchForm">
<p class="nomarge"><input id="kentekennormaal" class="kentekenheader" name="kenteken" size="10" type="text" value="" />
<!-- klantnaam opgegeven door trekhaken.nl -->
<input id="klantnaam" name="klantnaam" type="hidden" value="potgieter" />
<!-- // einde klantnaam -->
<button class="normaal" type="submit">zoek</button>
<!-- zoekmethode niet wijzigen -->
<input id="strZoekmethode" name="strZoekmethode" type="hidden" value="kenteken" />
<!-- // einde zoekmethode -->
</form><!-- the result of the search will be rendered inside this div MUST STAY HERE -->
<div id="result"></div>
<!-- // end result info -->
<!-- script functions needed for cross domain info please dont touch ;-) -->
jQuery(function ($) {$("#searchForm").submit(function(event){event.preventDefault();jQuery("#result").html('');var data=jQuery("#searchForm").serialize();jQuery.ajax({url:'http://www.trekhaken.nl/thirdparty/kenteken.php',type:"GET",crossDomain:true,data:data}).done(function(data){jQuery("#result").html(data)})});function ganaarbestelling(){var data=jQuery("#productform").serialize();jQuery.ajax({url:'http://www.trekhaken.nl/thirdparty/bestelling.php',type:"GET",crossDomain:true,data:data}).done(function(data){jQuery("#result").html(data)})}function maakbestelling(){var data=jQuery("#bestelform").serialize();$.ajax({url:'http://www.trekhaken.nl/thirdparty/bestelling.php',type:"GET",crossDomain:true,data:data}).done(function(data){jQuery("#result").html(data)})}function meeruitvoeringen(){var data=jQuery("#productform").serialize();jQuery.ajax({url:'http://www.trekhaken.nl/thirdparty/kenteken.php',type:"GET",crossDomain:true,data:data}).done(function(data){jQuery("#result").html(data)})}function merkmodel() { var data = jQuery("#searchForm").serialize();$.ajax({url:'http://www.trekhaken.nl/thirdparty/merkmodel.php',type: "GET",crossDomain: true,data: data}).done(function(data){jQuery("#result").html(data);});}function merkmodelselectie(){var data=jQuery("#merkmodelform").serialize();jQuery.ajax({url:'http://www.trekhaken.nl/thirdparty/merkmodel.php',type:"GET",crossDomain:true,data:data}).done(function(data){jQuery("#result").html(data)})}function merkgekozen(){var data=jQuery("#merkmodelform").serialize();jQuery.ajax({url:'http://www.trekhaken.nl/thirdparty/kenteken.php',type:"GET",crossDomain:true,data:data}).done(function(data){jQuery("#result").html(data)})}
})(jQuery);
此外,我现在正在调用functions.php
中的脚本function autopotgieter_scripts() {
wp_enqueue_script( '_s-navigation', get_template_directory_uri() . '/js/navigation.js', array(), '20120206', true );
wp_enqueue_style( 'autopotgieter-style', get_template_directory_uri() . '/css/style.css');
wp_enqueue_script( 'autopotgieter-index', get_template_directory_uri() . '/js/index.js', array(), '20130115', true );
wp_enqueue_script( 'autopotgieter-skip-link-focus-fix', get_template_directory_uri() . '/js/skip-link-focus-fix.js', array(), '20130115', true );
wp_deregister_script('jquery');
wp_register_script('jquery', 'http://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js', false, '2.1.4');
wp_enqueue_script('jquery');
wp_register_script('trekhaken', 'http://www.potgieter.nl/public_html/wp-content/themes/autopotgieter/js/trekhaken.js', array('jquery'), true);
wp_enqueue_script('trekhaken');
不幸的是,它仍然无效。特别令人困惑的是,它在potgieter.nl/testpage上仍然可以正常工作,但在potgieter.nl/trekhaken上却没有。
答案 0 :(得分:1)
检查控制台。我认为你应该在没有冲突模式下使用jQuery:jQuery("#searchForm")
而不是$("#searchForm")
(用jQuery替换每个$)
然后将您的代码放入文档中:
$(function() {
// Code here
});
如果没有准备好文档,则在加载jQuery之前执行脚本。
修改:
以防万一,这就是你在wordpress中正确加载jQuery的方法(在functions.php中)
add_action( 'wp_enqueue_scripts', 'load_jquery' );
function load_jquery() {
wp_enqueue_script('jquery');
}
编辑2:
并检查Vard回答以正确加载您的脚本
答案 1 :(得分:1)
不要手动在<head>
添加你的JS - 看一下来源:你的脚本包含在 16 行上,jQuery包含在行 80 。因此,当您调用脚本时,jQuery尚未包含在内。
在所有库包含后,应始终包含用户JS。 Wordpress提供了一种方法,可以使用wp_enqueue_script
正确处理此类和所有类型的依赖项。在你的主题 functions.php 中使用它来正确包含你的JS:
function theme_enqueue_script() {
wp_enqueue_script('theme_script', get_stylesheet_directory_uri() . '/js/script.js', array('jquery'), '', true);
}
add_action( 'wp_enqueue_scripts', 'theme_enqueue_script' );
这将在页面底部正确包含 script.js 文件(以减少显示页面时间)并声明它依赖于jQuery。
为了防止jQuery在安全模式下运行时出现任何错误,我建议始终将代码封装在一个闭包中:
(function($) {
// safe use of $ inside this
})(jQuery);
答案 2 :(得分:0)
&#34;未捕获的ReferenceError:jQuery未定义
trekhaken:247 Uncaught TypeError:jQuery(...)不是函数
index.js:2未捕获的TypeError:$不是函数&#34;
控制台中的当前错误。请在页面开头添加jQuery。在添加jQuery脚本文件之前,您正尝试在多个位置使用jQuery对象。