jQuery Ajax输入文本和文件在处理成功能之后无法获取值

时间:2017-03-13 07:47:34

标签: javascript php jquery

我使用ajax提交jQuery输入文本和输入文件。

$("#uploadForm").on('submit',(function(e)
{
    e.preventDefault();

    var badgeID = $("#badgeID").val();
    var firstName = $("#firstName").val();
    var lastName = $("#lastName").val();
    var emailAddress = $("#emailAddress").val();

    var firstNameMask = $("#firstNameMask").val();
    var lastNameMask = $("#lastNameMask").val();
    var emailAddressMask = $("#emailAddressMask").val();

    $.ajax(
    {
        url: "updateAccountSetting.php",
        type: "POST",
        data:  new FormData(this),
        contentType: false,
        cache: false,
        processData:false,
        success: function(data)
        {
            alert(data.firstNameVal);
            $("#firstNameMask").val(data.firstNameVal);
            $("#lastNameMask").val(data.lastNameVal);
            $("#emailAddressMask").val(data.emailAddressVal);

            $(".firstName").html(data.firstNameVal);

            $("#btnUpdateAvatar").attr({disabled: true, value: "Update"}).addClass('btn_inact').removeClass('btn_act');
            $('#firstName, #lastName, #emailAddress').attr('readonly', false);

            $('.uploadSuccess').show();
            $("#btnUpdateAvatar").attr('disabled', true).addClass('btn_inact').removeClass('btn_act');
        }           
   });
}));

我已经尝试过上面的代码,直到处理成PHP文件并且它完美无缺。

但是当我尝试:

时,为什么我无法获得价值
alert(data.firstNameVal);

警告的结果是:undefined

如果我只提醒数据

alert(data);

结果是:

enter image description here

3 个答案:

答案 0 :(得分:2)

试试这个:

success: function(data)
        {
            var result = JSON.parse(data);
            alert(result.firstNameVal);
            // rest of your code
        }   

说明: 对于JS来说,它只是一个字符串。您必须将其转换为JSON-Object。

答案 1 :(得分:0)

您可以解决在PHP中添加正确的标头信息或在JavaScript中解析响应的问题。

PHP解决方案:在输出之前添加此行(可能在脚本之上)

header('Content-Type: application/json');

JS解决方案:将响应字符串解析为json:

var dataObj = JSON.parse(data);

答案 2 :(得分:0)

您从 updateAccountSetting.php 网址获得JSON响应。 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式。您必须将JSON数据转换为Javascript对象。 看看下面的

success: function(data)
        {
            var data =$.parseJSON(data);//convert json data to javascript object
            $("#firstNameMask").val(data.firstNameVal);
            $("#lastNameMask").val(data.lastNameVal);
            $("#emailAddressMask").val(data.emailAddressVal);

            $(".firstName").html(data.firstNameVal);

            $("#btnUpdateAvatar").attr({disabled: true, value: "Update"}).addClass('btn_inact').removeClass('btn_act');
            $('#firstName, #lastName, #emailAddress').attr('readonly', false);

            $('.uploadSuccess').show();
            $("#btnUpdateAvatar").attr('disabled', true).addClass('btn_inact').removeClass('btn_act');
        }