Ajax+PHP验证,并在PHP验证中调用Javascript函数
Ajax + PHP validation and call Javascript function inside PHP validation
基本上,当使用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>
中调用Javascript函数外,一切都很好
我认为这里的问题是因为我声明了hr.responseText
,因此,我想要显示的javascript已经返回到文本中。但是我该怎么办才能解决这个问题呢?
如有任何帮助,我们将不胜感激。
尝试从"<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>
试试这个:
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.';
}
您没有标记jQuery
,但如果正在使用它,$.getScript
可能就是您想要的。
除此之外,最好将脚本构建到原始文档中,然后根据响应文本执行这个或那个函数。
相关文章:
- 同步调用,直到用户通过angular验证为访问者
- 使用对服务器的Ajax调用验证表单字段—Learning Ajax
- javascript验证和ajax调用同时不起作用
- Passport.js成功的身份验证根本没有调用
- 如何验证我对StockTwits API的调用
- 如何使用javascript验证表单中的数据,然后调用php页面
- 概念验证模型控制器调用正确的实例
- 如果($_SERVER[“REQUEST_METHOD”]=“POST”)条件在ajax调用不同的php文件进行验证和提
- TinyMCE验证给出错误:无法调用方法'getContent'的未定义
- 使用 Ajax 调用进行验证不起作用
- jQuery 验证 - 调用某些元素的 .valid() 方法不会清除错误
- 按照承诺,通过与chai的函数调用验证已解析承诺的内容
- jQuery.show()调用中弹出HTML5表单验证错误
- 未调用jQuery验证
- 我需要帮助来调用add()函数和验证函数,所以首先它将验证和然后添加
- 一键点击首先调用javascript,执行验证,然后调用控制器方法
- 如何验证for循环是否完成了node js中的所有迭代,循环是否包含带回调的函数调用
- jQuery验证,在继续之前等待服务调用响应
- 使用Google+登录验证调用应用引擎后端
- 对Twitter API进行身份验证调用,以避免速率限制