基本上,我在尝试使用Ajax时在PHP脚本中调用Javascript函数。
JavaScript的:
<script type="text/javascript">
function Validate() {
hr = new XMLHttpRequest();
name = document.getElementById('name').value;
hr.open('POST', 'validator.php', true);
hr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
hr.onreadystatechange = function() {
if ( hr.readyState == 4 && hr.status == 200 ) {
document.getElementById('message').innerHTML = hr.responseText;
}
}
hr.send('name=' + name);
}
function disable() {
document.getElementById('message').innerHTML = '';
}
</script>
HTML:
<div id="message"></div>
Name: <input type="text" id="name /">
<input type="button" onclick="Validate();" value="Validate" />
PHP:
<?php
$name = $_POST['name'];
if ( !empty( $name ) ) {
if ( $name == 'Tom' ) {
echo "<script>alert('Hello Tom, Welcome Back')</script>";
} else {
echo 'You are not Tom';
}
} else {
echo 'Please enter a name.';
}
?>
除了在PHP echo <script>alert()</script>
我认为这里的问题是因为我声明了hr.responseText
,因此我想要显示的javascript已经返回到文本中。但是我该怎么做才能解决这个问题呢?
任何帮助都将不胜感激。
答案 0 :(得分:0)
试试这个:
function do_alert($msg){
echo '<script type="text/javascript">alert("' . $msg . '"); </script>';
}
if(!empty($name)){
if($name == 'Tom'){
do_alert("You are tom");
}else{
do_alert("You are not tom");
}
}else{
echo 'Please enter a name.';
}
答案 1 :(得分:0)
您没有标记jQuery
,但如果您 使用它,$.getScript
可能就是您想要的。
除此之外,最好将脚本构建到原始文档中,然后根据响应文本执行此函数或该函数。
答案 2 :(得分:0)
尝试更改"<script>alert('Hello Tom, Welcome Back')</script>";
到'Hello Tom, Welcome Back';
然后在您的JavaScript中,您可以拨打alert(hr.responseText);
您必须更改您的javascript以检查返回的内容,以便您知道调用alert
或
document.getElementById('message').innerHTML = hr.responseText;
编辑:我将添加所有更改的代码......
<?php
$name = $_POST['name'];
if(!empty($name)){
if($name == 'Tom'){
echo 'Hello Tom, Welcome Back';
}else{
echo 'You are not Tom';
}
}else{
echo 'Please enter a name.';
}
?>
的Javascript
<script type="text/javascript">
function Validate(){
hr = new XMLHttpRequest();
name = document.getElementById('name').value;
hr.open('POST', 'validator.php', true);
hr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
hr.onreadystatechange = function(){
if(hr.readyState == 4 && hr.status == 200){
response = hr.responseText.replace(/^\s+|\s+$/g,''); //remove whitespace so you can compare
if (response == ("You are not Tom") || response == ("Please enter a name."))
{
document.getElementById('message').innerHTML = hr.responseText;
}
else {
alert(hr.responseText);
}
}
}
hr.send('name=' + name);
}
function disable(){
document.getElementById('message').innerHTML = '';
}
</script>