在Wordpress中实现JQuery。在一个页面上工作,而不是在另一个页面上工作

时间:2016-02-19 14:03:46

标签: jquery wordpress

我正在努力实现一个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&#8230;. <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)})}
// ]]&gt;</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上却没有。

3 个答案:

答案 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对象。