我正在创建一个选项表单或我的wordpress主题,我似乎陷入了一些疑问。
我已经创建了一个小提示,告诉你我正在做什么,你会注意到这个值是由php脚本填充的,而不是显示php脚本,我希望它显示来自数据库的值,如果我在html中使用相同的表单,那么在jquery中它不会
这里是小提琴:http://jsfiddle.net/33Ks6/
这是我在html页面中使用的代码:
function kandibox_hero_upload_image_link_callback($args) {
$hero_options = get_option( 'kandibox_theme_hero_options' ); ?>
<div id='image_uploads_group'>
<div id="imagebox_1">
<label for="upload_image">
<input id="show_upload_image_link_1" type="text" size="36" name="kandibox_theme_hero_options[show_upload_image_link_1]" value="<?php echo $hero_options['show_upload_image_link_1']; ?>" />
<input id="show_upload_image_link_1_button" class="button upload_images" type="button" value="Upload Image" />
<span class="description">Slide 1</span>
</label>
</div>
</div>
<?php
}
重要的一点是:
value="<?php echo $hero_options['show_upload_image_link_1']; ?>"
以下是我在jquery中如何发帖:
value=\" <?php echo $hero_options['show_upload_image_link_1']; ?> \"
答案 0 :(得分:0)
我在一个名为cosa.php的文件中编写了你的代码,然后我执行了该文件,我得到了变量......
<?php
function kandibox_hero_upload_image_link_callback($args) {
$hero_options['show_upload_image_link_1'] = 'HOLA';
?>
<div id='image_uploads_group'>
<div id="imagebox_1">
<label for="upload_image">
<input id="show_upload_image_link_1" type="text" size="36" name="kandibox_theme_hero_options[show_upload_image_link_1]" value="<?php echo $hero_options['show_upload_image_link_1']; ?>" />
<input id="show_upload_image_link_1_button" class="button upload_images" type="button" value="Upload Image" />
<span class="description">Slide 1</span>
</label>
</div>
</div>
<?php
}
echo kandibox_hero_upload_image_link_callback($args = null);
你是如何调用脚本的?你能执行这个并解释会发生什么吗?
好的,根据您的评论,您的问题是,如果您在.JS文件中,服务器不会解释PHP,因为它认为是纯文本文件。如果您需要该值,则有两种解决方法:
更改.php扩展名的.js扩展名。这很丑陋,并且在您调用文件时不允许您缓存该文件。
在隐藏的DOM元素中输出值,或作为DOM元素中的数据值属性输出,然后通过jQuery检索它。我总是喜欢这种方法。为此,在主脚本中输出表单,在输入中添加一个名为data-thumb的属性,然后使用$('input.some_class_to_select_it')来获取它.attr('data-thumb “)。
对于第二个选项:
PHP文件中的HTML表单应该有数据提示和类来抓取它:
<input data-thumb="<?php echo ... ?>" class="input_thumb">
你的jQuery形式你的.js文件将获取属性并将其写入输入:
$('input.input_thumb').each( function() {
$(this).val( $(this).attr('data-thumb');
});
我添加了.each()
,因为这样您可以在页面中的多个元素中使用它,只需将类和数据拇指添加到您想要的任何输入中
答案 1 :(得分:0)
您需要在HTML / PHP文件中生成相关的JS内联,以便您可以将echo
PHP变量直接放入代码中,或者您需要使用AJAX。
PHP是一种服务器端语言,因此当请求页面时,服务器会呈现PHP并将其发送到客户端浏览器。 JS通常是客户端语言(例如在这种情况下),因此在发生这种情况后在浏览器中在客户端执行。
这意味着他们无法在没有AJAX等特殊协议的情况下进行通信(否则,您可以通过在浏览器中执行JS将PHP脚本注入Web服务器)。
如果你将JS内联到你的php模板文件中,你可以像你的代码那样echo
PHP语句 - 这些语句在发送初始请求时被评估,因此变量值将被呈现到代码中在JS执行之前。
否则,您需要编写一个JS AJAX函数,该函数从PHP脚本请求值。如果你不熟悉AJAX,这显然会更加有效(尽管jQuery has great AJAX functionality built in)