我觉得我必须遗漏一些东西,或者我太无能力去搜索正确的问题了,所以请原谅我(并重定向)如果这是重复的话。我的问题可能比我认为的要困难得多。
我有一个页面有一个相当冗长的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'];
除此之外,我迷路了。安全性并不是真正的问题,因为表单捕获的信息绝不敏感。帮助
答案 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()`
你试过这样的事吗