//this is in php
function msgbox($msg, $type)
{
if ($type == "alert")
{
// Simple alert window
?> <script language="JavaScript"> alert("<? echo $msg; ?>"); </script> <?
}
elseif ($type == "confirm")
{
// Enter Confirm Code Here and assign the $result variable for use
// Should include "OK" and "Cancel" buttons.
?>
<script language="JavaScript">
if (confirm("<? echo $msg; ?>"))
{
<? $result == "ok"; ?>
}
else
{
<? $result == "cancel"; ?>
}
</script>
<?
}
}
if ($page_title->exists())
{msgbox("page exists,do you want to delete", "confirm");
}
if ($result == "ok")
//code..
问题是$result
没有从我认为的确认框中读取值,因为if子句没有被执行,程序流正在没有if子句的情况下进行。
答案 0 :(得分:2)
您不能以这种方式将服务器端代码(PHP)与客户端代码混合在一起。 要使javascript更改PHP状态,您需要进行HTTP调用(经常使用AJAX)。
您需要阅读PHP教程并确保掌握概念。
答案 1 :(得分:0)
您尝试完成的任务可以使用Ajax创建,只要页面在服务器端创建然后发送给用户,就不能直接篡改 $ result 变量。首先掌握AJAX
的参考以及如何使用它。
101 article on Ajax with jQuery (sitepoint.com)
使用jQuery和PHP简单实现AJAX
<强> Client.html 强>
<!--some html...-->
<a class="ajax" href="/delete.php?title=some+title">Delete action link</a>
<script type="text/javascript">
// assuming jQuery has been loaded
$(function () {
$('a.ajax').click(function () {
// get link's href, get main url part and query part
var link = $(this).attr('href');
var route = link.substring(0, link.lastIndexOf('?'));
var query = link.substring(link.lastIndexOf('?') + 1);
// perform ajax call, to the main part of the link, with data
$.ajax({
type: "GET",
url : route,
data : query,
success : function (data) {
if (data === '1') {
window.alert('page removed');
} else {
window.alert('error');
}
}
});
// prevent default behavior
return false;
});
});
</script>
还有一个 delete.php 脚本,它将$ _GET ['title']作为参数
<?php
$title = $_GET['title'];
if ($pages->contain($title)) {
$pages->remove($title);
echo '1';
}
?>
请注意,这只是简化,向您展示如何进行简单的AJAX调用
答案 2 :(得分:-1)
您正在使用短标签,请确保它们已从php.ini文件中打开,否则您的代码中将无法执行PHP代码。