发布包含javascript变量或函数的隐藏字段?

时间:2014-07-24 07:53:27

标签: javascript php html

我觉得我必须遗漏一些东西,或者我太无能力去搜索正确的问题了,所以请原谅我(并重定向)如果这是重复的话。我的问题可能比我认为的要困难得多。

我有一个页面有一个相当冗长的php代码块(主要是MySQL查询),它生成的变量最终作为字符串传递给JavaScript。然后使用该数据创建一些交互式表单元素。最终结果是一个textarea字段,其中包含一个JS字符串,我想将其带入新页面。我也将POST变量发布到那个新页面。

示例代码:

<?php //Get data from MySQL, define variables, etc.?>

<script> //Move php strings into JavaScript Strings; 
         //put JS vars into textareas; etc 
         var foo = document.getElementById('bar').value </script>

<form action="newpage.php" method="post">
<input type="hidden" id="id" name = "name" value="**JAVASCRIPT foo INFO HERE**"/>
<input type = "hidden" id="id2" name = "name2" value = "<?php echo $foo; ?>" />
<input type="submit" name="Submit" value="Submit!" />

以正确的顺序调用JS函数有点棘手,因为它们依赖于在查询完成之前未定义的php变量,所以我对onload函数做不了多少。我在php中识字。我是JavaScript的新手。我对JQuery相当无能,我从未使用过AJAX。我也不想使用cookies。

很高兴看到原始页面代码和新页面代码的示例。我知道我可以通过

在新页面信息上收到php
$foo = $_POST['name2'];
除此之外,我迷路了。安全性并不是真正的问题,因为表单捕获的信息绝不敏感。帮助

2 个答案:

答案 0 :(得分:0)

如果你不需要使用failure函数,你可以跳过AJAX方法(这有点重),所以我建议你使用$.post或{{ 3}} jQuery的语法。

预定义语法:jQuery.post( url [, data ] [, success ] [, dataType ] )

以下是 jQuery 的示例:

$.post('../controllerMethod', { field1: $("#id").val(), field2 : $("#id2").val()}, 
    function(returnedData){
         console.log(returnedData);
});

否则,您可以使用 AJAX 方法:

    function yourJavaScriptFunction() {
        $.ajax({
            url: "../controllerMethod",   //URL to controller method you are calling.
            type: "POST",                 //Specify if this is a POST or GET method.
            dataType: "html",
            data: {                       //Data goes here, make sure the names on the left match the names of the parameters of your method you are calling.
                'field1': $("#id").val(), //Use jQuery to get value of 'name', like this.
                'field2': $("#id2").val() //Use jQuery to get value of 'name2', like this.
            },
            success: function (result) {
                //Do something here when it succeeds, and there was no redirect.
            }
        });
    }

答案 1 :(得分:0)

function init()
{
    var str1 = <?php echo varname; ?> //to access the php variable use this code//
    document.getElementById('id').value= str1;
}

<body onload="init()">//make sure you call the function init()`
你试过这样的事吗