我有一个表单要提交。现在我想检索提交的数据与javascript在下一页。
当我把它放在html:
的正文中时,效果很好。<script>
var $_POST = <?php echo json_encode($_POST); ?>;
document.write($_POST["form_input_name"]);
</script>
现在我想在jQuery插件方法中有这个功能。我尝试了以下在我的jquery插件:
$.pluginname.test = function() {
var $_POST = <?php echo json_encode($_POST); ?>;
document.write($_POST["form_input_name"]);
};
但是当我尝试在html正文中执行它时,我得到以下错误消息:
[Error] SyntaxError: Unexpected token '<'
[Error] TypeError: undefined不是一个对象".pluginname.test美元")
为什么这个代码片段在常规Javascript环境中工作,而不是由jQuery插件调用时?
您的PHP标签被评估为JavaScript。这意味着PHP不处理它们。
这可能是因为您将脚本移到了.js
文件中。
虽然可以从PHP生成JavaScript文件,但这在这里没有帮助:您试图生成的数据被提交给生成HTML文档的PHP脚本。
将脚本移回生成HTML的PHP文件中的<script>
和</script>
之间
如果此代码:
$.pluginname.test = function(){};
是在外部js文件,那么你不能分配一个PHP代码值给它。这会导致错误。所以我有一个解决方案,比如创建一个基于args的插件,比如:
$.pluginname.test = function(phpObj){
document.write(phpObj["form_input_name"]);
};
你可以在php/html页面的脚本块中调用它,比如:
<script>
$.selector.test(<?php echo json_encode($_POST); ?>);
</script>
如果你想创建一个jQuery插件:
$.fn.pluginname = function() {
var $_POST = 'SOME TEXT HERE';
$(this).text($_POST);
};
$('.el').pluginname();
演示:http://jsfiddle.net/bfjLo02m/
注意:确保在 之前包含jQuery编辑:
因为你已经把插件放在了一个单独的。js文件中,你需要把PHP变量传递给index.html文件中的插件。下面是一个例子:
// pluginname.jquery.js <-- separate file for your plugin
$.fn.pluginname = function(options) {
$(this).text(options.var1);
};
// index.html (or any html file)
$('.el').pluginname({ var1: $_POST["somePHPVar"], var2: 'var2Value' });