$_POST with javascript -它在javascript中工作,但不能在jquery插件中工作


$_POST with javascript – it works in javascript but not in jquery plugin

我有一个表单要提交。现在我想检索提交的数据与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' });