Javascript 使用从AjaxSubmit返回的数据

Javascript 使用从AjaxSubmit返回的数据,javascript,ajax,jquery,Javascript,Ajax,Jquery,我正在尝试访问从ajaxSubmit请求返回的数据 $("#searchbutton").on('click', function() { $("#searchform").ajaxSubmit({ success: function(data) { populate('#registrationform', data); }, res

我正在尝试访问从ajaxSubmit请求返回的数据

 $("#searchbutton").on('click', function() {
            $("#searchform").ajaxSubmit({
                success: function(data) {
                    populate('#registrationform', data);
                },
                resetForm: true
            });
        });
我的填充函数无法识别返回的数据,但如果我使用原始数据识别

 $("#searchbutton").on('click', function() {
            $("#searchform").ajaxSubmit({
                success: function(data) {
                    populate('#registrationform', {studentId: 1, firstName: 'Kay'});
                },
                resetForm: true
            });
        });
我的填充函数可以工作。你知道为什么返回的数据不能被识别吗?

就像

$("#searchbutton").on('click', function() {
     $("#searchform").ajaxSubmit({
         success: function(data) {// data should be return as json
            populate('#registrationform',{studentId: data.id, firstName: data.name});
         },
         resetForm: true
     });
});

我的猜测是,数据实际上是以字符串的形式返回的,而不是JavaScript对象。如果使用
console.log(data)
进行检查,则很容易忽略此区别


查看
success
方法和
dataType
选项,很有可能服务器的响应被当作一个简单的字符串。尝试显式设置
数据类型:“json”
,然后查看返回的内容。或者使用
JSON.parse()反序列化到对象

可能
数据
的返回格式与预期不同?例如,它返回一个包含对象的数组?您可以在成功回调中添加
console.log(data)
,然后查看返回的内容。或者使用firebug/dev console/fiddler检查响应。返回的数据就是这种格式。问题仍然存在。返回的数据正是硬编码的数据。数据已经以这种格式出现。为什么我需要重写数据字符串?当您尝试以下操作时,会得到什么结果?`成功:函数(数据){console.log(typeof data);var obj=JSON.parse(数据);console.log(typeof obj);填充('#registrationform',obj);}`SyntaxError:JSON.parse:预期的属性名或'}',响应:{studentId:1,firstName:'Dave'}。JSon:studentId 1,名字DaveHmm。。那么,
console.log(数据类型)
是否产生了
object
?我的怀疑是
String
。从JSON.parse错误看,您返回的响应可能不是有效的JSON。特别是,您可能忘记在键周围加引号。我总是这样做。也就是说,你应该有
{studentId:1,firstName:'Dave'}
而不是
{“studentId:1,firstName:“Dave”}
。它没有产生object,而是说string。非常感谢Brettjonesdev。毕竟,我没有创建一个正确的JSON,也没有将字符串解析回JSON。它现在运行良好。谢谢