所以,我试图在这里解决一个非常简单的问题但是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 -->
modes.php另一个文件 这段代码绝对不正确,我试图从之前的解决方案中获取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)
,我只想提一下答案 0 :(得分:3)
正如您所知,它不会按原样运作,但让我试着解释原因。这里存在一些概念问题,在你理解它们之前会一直困扰着你。
您需要了解的最重要的事情是如何混合使用JavaScript和PHP。这是巨大的。您可以将JavaScript和PHP放在同一个文件中,但不是您想象的那样。让我告诉你。
这是一个使用jQuery的简单PHP文件。它包含JavaScript和PHP。
(function($) {
$('#test-button').click(function() {
<?php echo 'This is a test'; ?>
});
})(jQuery);
现在,您可能会认为当您在浏览器中加载该文件时,当您单击带有ID test-button 这是一个测试 >,对吗?不太好!
实际发生的是您的Web服务器查看该文件并说,&#34;嗯,我在这里看到PHP标签。在将文件发送到网络浏览器之前,我会更好地处理这些文件。&#34;所以它开始工作了。它回应这是一个测试,因为它在click
回调中被告知。并且在将文件发送到浏览器之前执行此操作。因此,当您将 加载到Web浏览器中时, 最终的文件如下所示:
(function($) {
$('#test-button').click(function() {
This is a test
});
})(jQuery);
请参阅?没有PHP标签!在JavaScript有机会运行之前,PHP已经被执行了。 PHP事先由服务器运行。 (在这种情况下,我们最终会在浏览器中显示错误。This is a test
不是有效的JavaScript!)
因此,如果PHP在服务器上运行,那么如何在jQuery和PHP之间共享数据?答案是使用$.post
,您已经做过了。你只需稍微调整一下。这是一个例子。
说我有下面的JavaScript。我想问服务器玛丽最喜欢的颜色。当服务器告诉我时,我想要显示一个警告说它是什么。这是我在JavaScript文件中如何做到这一点。想象一下,它位于script
标签的 index.php 中。
(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
。这意味着请求被发送到服务器:&#34;我需要将一些数据发送到color.php,好吗?&#34;服务器说,&#34;当然!我将传递该数据并执行PHP文件中的任何代码。&#34; $people
(jQuery发送的$_POST['person']
的值)在person
中查找值。done
回调运行。done
回调中,变量data
包含服务器发回的JSON编码数组。该数组有两个键,请记住:name
和color
。我们现在可以data
。data
中的值弹出警告,告诉我们玛丽最喜欢的颜色。现在让我们看看您的代码。在第8行,您将变量z
发布到modes.php
。然后你有一个回调说,&#34;当数据发送成功后,做一些事情。&#34;到现在为止,你可能会猜到为什么它不能按原样运作。在JavaScript文件甚至进入浏览器之前,PHP已经运行。当PHP事先运行时,$_GET['z2']
没有设置。
因此,不要将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中的回调可以使用该值来执行任何操作。
我希望这是有道理的!随意问我这里发生了什么。