无法获得AJAX成功消息

时间:2015-07-28 10:14:12

标签: php jquery ajax

用这个把我的大脑绞了好几个小时。我有以下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>

我正在尝试填写“成功”消息来填充此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));
}

任何人都可以帮忙吗?

4 个答案:

答案 0 :(得分:3)

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.

答案 1 :(得分:0)

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

因此,在查询结束时,如果一切顺利完成,您将执行以下操作:

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

你的ajax cal看起来像这样:

$("#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文件将处理数据 您将响应传递回'完成函数) 而且你可以用你的回答制作任何你想要的东西。

我刚刚插入了一条警告信息

希望这有帮助。

答案 2 :(得分:0)

按如下方式更改脚本

$.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";
}

答案 3 :(得分:0)

很抱歉,我为您提供的代码是针对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();
})

所以我不再使用响应了,但我只会返回一个包含响应的数组。