javascript - ajax响应数据未定义

标签 javascript php ajax

我在 ajax post 提交时遇到问题 这是我的脚本

function postad(actionurl) {
        if (requestRunning) return false ;

        if (! $("#editadform").valid()) {
            validator.focusInvalid();
            return false ;
        }

        $('#ajxsave').show() ;
        requestRunning = true ;
        var postData = $('#editadform').serializeArray();
        $.ajax(
        {
            url : actionurl,
            type: "POST",
            data : postData,
            success:function(data, textStatus, jqXHR)
            {
                $('#diverrors').html(data.errors) ;
                $('#divalerts').html(data.alerts) ;

                if (data.status=='success') {  alert(data.status);
                  $('#siteid').val(data.siteid) ;
                  if ($('#adimager').val())
                    $('#divlmsg').html(data.alertimage) ;
                  $('#editadform').submit() ;

                } else {

                  $('#ajxsave').hide() ;
                }
            },
            error: function(jqXHR, textStatus, errorThrown)
            {
                $('#ajxsave').hide() ;
            },
            complete: function() {
                requestRunning = false;
            }
        });

        $('.btn').blur() // remove focus
        return false ;
    }

这适用于 if (textStatus=='success') {

但是当操作失败时,alert(data.status) 显示未定义。

使用FireBug,我可以看到数据正确返回。为什么 data.status 是“未定义”?

最佳答案

如果您未在 jQuery 中指定 $.ajax() 调用的 dataType 字段,则会将响应格式化为纯文本。您的代码的解决方法是将 dataType: "JSON" 包含到您的 $.ajax() 参数中,或者包含在您的 success 中> 函数,使用以下命令将纯文本响应解析为 JSON 对象:

data = JSON.parse(data); // You can now access the different fields of your JSON object

更新:

yes i have not status field in action url, how to add data status field in php code?

在创建旨在返回 JSON 数据的 PHP 脚本时,您首先需要构建一个数组,然后将其编码为 JSON。

因此,假设您有一个 PHP 脚本,要么成功并生成一些数据并将其放入 $data 变量中,要么失败,则可以采用以下样式:

<?php
    // ^^ Do your PHP processing here
    if($success) { // Your PHP script was successful?
        $response = array("status" => "success!", "response" => $data);
        echo json_encode($response);
    }
    else {
        $reponse = array("status" => "fail", "message" => "something went wrong...");
        echo json_encode($response);
    }
?>

关于javascript - ajax响应数据未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44095175/

相关文章:

PHP mail() 方法和响应回调不起作用

javascript - JQuery Ajax 调用什么都不做

php - 使用ajax重新加载php代码

javascript - 理解揭示模块化模式

javascript - canvas.todataURL 在第一次尝试时不起作用

javascript - 用于指令通信的 AngularJS 指令抛出有关未找到 Controller 的错误

php - 选择一个不同的值及其在列中显示的次数总和

PHP/MySQL - 选择 IN

PHP - while mysql_fetch_array 循环错误?

php - 为什么我的ajax无法获取输入表单中当前输入的字符串?