不能让AJAX成功消息工作


Can't Get AJAX Success Message To Work

为这个绞尽脑汁。我有以下PHP AJAX脚本:

<script type="text/javascript">
$(document).ready(function(){
$("#submitValue").click( function(){
    var uemail=$("#uemail").val();
    var uage=$("#uage").val();
    var city=$("#city").val();
    var urname=$("#urname").val();
    $.ajax({
        type: "POST",
        url:"acctUpdate.php",
        data: "uemail=" + uemail +"&uage="+ uage +"&city="+ city +"&urname="+urname +"&uname="+"<?php echo $memName; ?>" +"&uID="+"<?php echo $memID; ?>" +"&acctDB="+"profile" ,
        dataType: "dataString",
        success: function(data){
            $('#results').html('Success').delay(1000).fadeOut();
        }
    });
});
});
</script>

我正在尝试获取消息'Success'来填充这个span元素;

<span id="results"></span>

但似乎就是不能让它工作。

PHP如下(表更新得很好);

if($_POST['acctDB'] == 'profile') {
$uemail = $DB->real_escape_string($_POST['uemail']);
$uage = $DB->real_escape_string($_POST['uage']);
$city = $DB->real_escape_string($_POST['city']);
$urname = $DB->real_escape_string($_POST['urname']);
$uname = $DB->real_escape_string($_POST['uname']);
$uID = $DB->real_escape_string($_POST['uID']);
mysqli_query($DB, 'UPDATE profile SET memEmail="'.$uemail.'", memAge="'.$uage.'", memCity="'.$city.'", memRealName="'.$urname.'" WHERE memID="'.$uID.'" AND memUname="'.$uname.'" ') or die(mysqli_error($DB));
}
有谁能帮忙吗?

dataType: "dataString"

请注释这部分,它将工作。

if($_POST['acctDB'] == 'profile') {
$uemail = $DB->real_escape_string($_POST['uemail']);
$uage = $DB->real_escape_string($_POST['uage']);
$city = $DB->real_escape_string($_POST['city']);
$urname = $DB->real_escape_string($_POST['urname']);
$uname = $DB->real_escape_string($_POST['uname']);
$uID = $DB->real_escape_string($_POST['uID']);
mysqli_query($DB, 'UPDATE profile SET memEmail="'.$uemail.'", memAge="'.$uage.'", memCity="'.$city.'", memRealName="'.$urname.'" WHERE memID="'.$uID.'" AND memUname="'.$uname.'" ') or die(mysqli_error($DB));
echo 'yes';
}
// add echo 'yes'; at php submit page.

修改脚本如下

$.ajax({
        type: "POST",
        url:"acctUpdate.php",
        data: "uemail=" + uemail +"&uage="+ uage +"&city="+ city +"&urname="+urname +"&uname="+"<?php echo $memName; ?>" +"&uID="+"<?php echo $memID; ?>" +"&acctDB="+"profile" ,
       // dataType: "dataString",
        dataType : "text",
        success: function(data){
            $('#results').html(data).delay(1000).fadeOut();
            return false;
        }
    });
 return false;

在php文件中修改

$qry = mysqli_query($DB, 'UPDATE profile SET memEmail="'.$uemail.'", memAge="'.$uage.'", memCity="'.$city.'", memRealName="'.$urname.'" WHERE memID="'.$uID.'" AND memUname="'.$uname.'" ') or die(mysqli_error($DB));
if($qry)
    echo "Success";
}

当您进行ajax调用并将值传递给php文件时,还需要返回响应。

所以在查询的最后,如果一切都成功完成,你会做这样的事情:

return Response::json(array(
            'success' => true,
            'message'  => trans('admin.update_success'),
        ), 200);

你的ajax调用看起来像这样:

$("#submitValue").click(function(e){
        var uemail=$("#uemail").val();
        var uage=$("#uage").val();
        var city=$("#city").val();
        var urname=$("#urname").val();
    $.ajax({
        url: 'acctUpdate.php',
        type: 'POST',
        dataType: 'json',
        data: "uemail=" + uemail +"&uage="+ uage +"&city="+ city +"&urname="+urname +"&uname="+"<?php echo $memName; ?>" +"&uID="+"<?php echo $memID; ?>" +"&acctDB="+"profile" ,
        dataType: "dataString",
    })
    .done(function(response) {
        alert(response.message)
    })
    .fail(function(response) {
        if (response.status == 400) {
            var output = '<ul>';
            var errors = $.parseJSON(response.responseText).errors;
            $.each(errors, function(id, message) {
                output += '<li>' + message[0] + '</li>'
            });
            output += '</ul>'
            alert(output)
        } else {
        alert('UnknownError');
        }
    })
    e.preventDefault();
})

总结一下:

进行ajax调用php文件将处理这些数据将响应传递回'done '函数)在这里,你可以用你的回应做出任何你想要的东西。

我刚刚插入了一个警告消息

作为例子

对不起,但是我为您提供的代码是为Laravel框架,我想你没有使用它。所以你没有'Respone::'类。

在php文件中:
      //if the query has success 
        $return = array();
        $return['responseCode'] = 1;
        $return['responseHTML'] = 'Success'

        echo json_encode( $return );

和ajax调用:

$("#submitValue").click(function(e){
        var uemail=$("#uemail").val();
        var uage=$("#uage").val();
        var city=$("#city").val();
        var urname=$("#urname").val();
    $.ajax({
        url: 'acctUpdate.php',
        type: 'POST',
        dataType: 'json',
        data: "uemail=" + uemail +"&uage="+ uage +"&city="+ city +"&urname="+urname +"&uname="+"<?php echo $memName; ?>" +"&uID="+"<?php echo $memID; ?>" +"&acctDB="+"profile" ,
    })
    .done(function(response) {
        if( response.responseCode == 0 ) {
            //alert(respomse.responseHTML)
          $('#results').html(response.responseHTML);
        } else if( response.responseCode == 1 ) {
            //alert(res.responseHTML)
          $('#results').html(response.responseHTML);
        }
    })
    e.preventDefault();
})

我不再使用响应了我将返回一个带有响应的数组