![](/img/trans.png)
[英]Get variable from one javascript to another javascript in another php file
[英]How to get a php variable from one file to another maybe using jQuery/javascript?
因此,我试图在这里解决一个非常简单的问题,但是4小时后的最好时机我仍然不知道。 我只想将变量z转换为php,以便可以在数组中使用该值。 目前,我已经设法将值转换为另一个文件中的php,现在我需要将其恢复为原始文件以供使用,这就是我碰壁的地方。 我在下面包含了相关代码。
orders2.php使用z的javascript值,并使用另一个文件将其设置为PHP
(function($) {
$(document).on('click', '.rowclick',function() {
var z = 2;
alert(z);
var post = $.post('../../wp-content/themes/alma-child/includes/modes.php',{z:z});
post.done(function(data){
<?php
$rownum = $_GET['z2'];
echo "nei";
?>
})
$("#myModal1").modal();
});
})(jQuery);
orders2.php中的模态部分
<div id="myModal1" class="modal" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-body">
<div class="account_modal_body">
<button class="close" type="button" data-dismiss="modal">Close Window</button>
<div id="missing">
<form action="#" id="form" method="post" name="form">
<div id="printthis">
<h2>Track Mastering Details</h2>
<label>Track Name</label>
<div class="subsec">
<?php echo $waiting[$z2][0] ?>
</div>
<label>Artist</label>
<div class="subsec">
<?php echo $waiting[$z2][1] ?>
</div>
<label>Duration</label>
<div class="subsec">
<?php echo $waiting[$z2][2] ?>
</div>
<label>ISRC</label>
<div class="subsec">
<?php echo $waiting[$z2][3] ?>
</div>
<label>Mastering Notes</label>
<div class="subsec">
<?php echo echo $waiting[$z2][4] ?>
</div>
</div>
</form>
</div>
<button class="close" id="print" type="button">Print</button>
</br>
</div>
</div>
</div>
</div>
<!-- /.modal-dialog -->
</div>
<!-- /.modal -->
这个文件绝对是不正确的,我尝试从以前的解决方案之一中获取jQuery,但是不确定它是如何工作的
<?php $z2=$ _POST['z']; ?>
<div id="uploads">
<?php echo $z2; ?>
</div>
<script>
jQuery('#uploads').load('orders2.php?account=<?php echo($z2);?>');
</script>
注意:我意识到这可能不是执行此操作的最佳方法,因此将JavaScript变量转换为php的任何其他解决方案将不胜感激。 另外,只需提一下,我希望页面不刷新(因此javascript)
如您所知,它不会按原样工作,但让我尝试解释原因。 这里有一些概念性问题,这些问题会一直困扰您,直到您了解它们为止。
您需要了解的最大的事情是如何混合使用JavaScript和PHP。 这是巨大的。 您可以将JavaScript和PHP放在同一个文件中,但不能采用您认为的方式 。 让我演示给你看。
这是一个使用jQuery的简单PHP文件。 它包含JavaScript和PHP。
(function($) {
$('#test-button').click(function() {
<?php echo 'This is a test'; ?>
});
})(jQuery);
现在,您可能会认为,当您在浏览器中加载该文件时,PHP会回显这是单击ID为test-button的HTML元素时的测试 ,对吗? 不完全的!
实际发生的是您的Web服务器查看该文件并说:“嗯,我在这里看到PHP标记。在将文件发送到Web浏览器之前,最好对其进行处理。” 这样就可以了。 呼应这是一个考验 ,因为它是被告知,就在里面click
回调。 并在将文件发送到浏览器之前执行此操作。 所以, 你最终当你加载到Web浏览器与文件看起来是这样的:
(function($) {
$('#test-button').click(function() {
This is a test
});
})(jQuery);
看到? 没有PHP标签! 在没有机会运行JavaScript之前,PHP已经被执行。 PHP事先由服务器运行。 (在这种情况下,我们最终会在浏览器中出错。 This is a test
无效的JavaScript This is a test
!)
因此,如果PHP在服务器上运行,如何在jQuery和PHP之间共享数据? 答案是使用$.post
,您已经在这样做了。 您只需要稍微调整一下。 这是一个例子。
说我有下面的JavaScript。 我想向服务器询问玛丽最喜欢的颜色。 服务器告诉我时,我想显示一个警报来说明它是什么。 这是我在JavaScript文件中执行此操作的方法。 想象一下,在index.php文件 ,在script
标签。
(function($) {
var name = "Mary";
$.post("color.php", { person: name })
.done(function(data) {
alert(data.name + "'s favorite color is " + data.color + "!");
});
})(jQuery);
您会注意到,我们还引用了一个PHP文件color.php
。 因此,我们也必须创建它。 这是color.php中的代码可能如下所示:
<?php
$people = array(
'Eric' => 'blue',
'Freddie' => 'orange',
'Mary' => 'blue',
'Pedro' => 'green'
);
echo json_encode(array(
'name' => $_POST['person'],
'color' => $people[$_POST['person']],
));
那么,这一切如何运作? 这是当您在上面的示例中访问页面时发生的情况的细分。
Mary
以JSON格式发布到color.php
。 这意味着将向服务器发送一个请求:“我需要向color.php发送一些数据,好吗?” 服务器说:“当然!我将传递这些数据并执行PHP文件中的所有代码。” $_POST['person']
(jQuery发送过来的person
的值)在$people
查找值。 done
回调运行。 done
回调中,变量data
保存服务器发送回的JSON编码数组。 该数组有两个键,请记住: name
和color
。 这些现在可以在data
。 data
的值弹出警报,告诉我们玛丽最喜欢的颜色是什么。 现在让我们看看您的代码。 在第8行上,将变量z
到modes.php
。 然后,您将收到一个回调,其中说:“成功发送数据后,请执行一些操作。” 到现在为止,您可能已经猜出了为什么它无法按原样工作。 该PHP已经在JavaScript文件甚至尚未进入浏览器之前就已运行。 而且,当PHP预先运行时,未设置$_GET['z2']
。
因此,不要将PHP放入回调中,而modes.php
其放入modes.php
。 modes.php
可以处理您发布到它的数据。 您可以使用如下所示的内容:
// z is available in $_POST['z']. This is an example of using it to look up a row
// representing a blog post in your database if you had a Post model class
$row = Post::findByPrimaryKey($_POST['z']);
echo json_encode($row->toArray());
然后,第一个代码段中的代码可能如下所示:
// ...
var post = $.post('../../wp-content/themes/alma-child/includes/modes.php',{z:z})
.done(function(data){
alert(data.title);
});
// ...
简而言之,从您的jQuery发布到modes.php
。 modes.php
在服务器上运行并返回一个值。 然后,jQuery中的回调可以使用该值执行您想要的任何操作。
我希望这是有道理的! 随时问我任何有关这里发生的事情。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.