Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如果我更改输入类型,将不会运行ajax。。?_Php_Jquery_Ajax_Forms - Fatal编程技术网

Php 如果我更改输入类型,将不会运行ajax。。?

Php 如果我更改输入类型,将不会运行ajax。。?,php,jquery,ajax,forms,Php,Jquery,Ajax,Forms,我有一个表单供用户使用jquery+Ajax更新信息。到目前为止,一切都很好,但当我在表单的全名部分将输入类型=电子邮件更改为输入类型=文本并单击更新时。有错误吗???它不会在ajax中运行php文件。我没有看到导致此错误的任何连接?谁能告诉我为什么?但如果我把全名部分的输入类型改回电子邮件。它起作用了!这太奇怪了 这是我的表格: <div id="changeuserinfo_result"></div> <form role="form" method

我有一个表单供用户使用jquery+Ajax更新信息。到目前为止,一切都很好,但当我在表单的全名部分将输入类型=电子邮件更改为输入类型=文本并单击更新时。有错误吗???它不会在ajax中运行php文件。我没有看到导致此错误的任何连接?谁能告诉我为什么?但如果我把全名部分的输入类型改回电子邮件。它起作用了!这太奇怪了

这是我的表格:

 <div id="changeuserinfo_result"></div>
    <form role="form" method="post">
                <div class="form-group">
                <label>Fullname</label>
                <input type="text" class="form-control" id="changename" name="changename" value="<?php echo $_SESSION['name'] ?>">
                </div>
                <div class="form-group">
                <label>Password</label>
                <input type="password" class="form-control" id="changepass" name="changepass" value="<?php echo $_SESSION['pass'] ?>">
                </div>
                <button class="btn btn-default" id="changeuserinfo">Update</button>
                </form>
以下是我的jquery代码:

$(document).ready(function(){
$('#changename').focus();  
$('#changeuserinfo').click(function(){ 
    var changename = $('#changename');  
    var changepass = $('#changepass');
    var changeuserinfo_result = $('#changeuserinfo_result'); 
    changeuserinfo_result.html('loading...');
    if(changename.val() == ''){ 
        changename.focus();
        changeuserinfo_result.html('<span class="errorss"> * Empty fullname</span>');
        return false;
    }
    else if(changepass.val() == ''){ 
        changepass.focus();
        changeuserinfo_result.html('<span class="errorss">* Empty password</span>');
        return false;
    }
    else {
        var UrlToPass = {changename:changename.val(),changepass:changepass.val()} ;
        $.ajax({ 
        type : 'POST',
        cache: false,
        data : UrlToPass,
        url  : 'changeuserinfo.php',
            success: function(responseText){ 
                if(responseText == 1){
                    $('#changeuserinfo_result').html('<span style="color:green"> Update OK</span>');
                }
                else{
                    $('#changeuserinfo_result').html('<span class="errorss"> Update fail. Try again</span>');
                }
            }
        });
    }
});
});

您的输入上没有结束标记

应该是

还将页面的doctype设置为HTML5

<!DOCTYPE HTML>
....
</html>

完成了结束标记,但仍然不起作用,我已将doctype正确设置为html5。结束标记与问题无关,在html5中不再需要。我将您的代码复制/粘贴到codepen,它工作得非常好。您是否检查过浏览器控制台以查看是否存在任何javascript错误?如果出现错误,它可能根本不会执行js的post部分。您遇到了什么错误?您是否尝试使用Ctrl F5刷新缓存?我尝试清除缓存和所有内容,但它不起作用。我试着用chrome和firefox进行测试,结果仍然一样。通过firebug测试,它只是快速显示+POST的红线http://..../changeuserinfo.php 然后消失。如果我将input type=text从全名更改为input type=email,那么我的代码工作正常。是否还有其他javascript函数在运行?人们可以超越使用文本类型输入的行为