【发布时间】:2017-03-30 05:24:04
【问题描述】:
我正在做一个 ajax 调用,它会从服务器返回一些数据。我在来自 ajax 调用的数据上处理字符串函数。据我所知,我可以看到字符串操作在 ajax 调用结束之前开始。经常给我未定义的错误。这是我的ajax调用
$.ajax({
type: "POST",
url: "/add_director",
headers: {'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')},
data: formData,
cache: false,
contentType: false,
processData: false,
success: function(data) {
$('#addDirModal').modal('hide');
insertDirector(data);
},
error : function(xhr ,status ,error)
{
console.log(xhr);
alert(xhr);
}
});
这是我的 insertDirector 函数
function insertDirector(data){
console.log(data);
if (data.msg == "1") {
$.each(data,function(key,value){
var dir_name = value.dir_name;
var dir_pan = value.dir_pan;
var dir_din = value.dir_din;
var dir_addr = value.dir_addr;
var dir_id = value.id;
var dir_img = value.dir_img;
if (dir_name.val().length > 15) {
var dir_r_name = dir_name.substr(0,15);
}
else{
var dir_r_name = dir_name;
}
});
}
}
在这里,当我处理 substr() 时,它会抛出错误 Cannot read property 'val' of undefined。我可以看到这是因为 substr() 在 ajax 请求完成之前执行。我该如何解决 ?
已编辑
这是回复
{"msg":"1","director":{"dir_name":"Naveen","dir_pan":"AAAAA1111B","dir_din":"123456","dir_addr":"dsadasdasdasdsadasdas","dir_img":"1490852438.jpg","user_id":3,"updated_at":"2017-03-30 05:40:38","created_at":"2017-03-30 05:40:38","id":15}}
【问题讨论】:
-
一切都必须在
success方法中发生。 -
“数据”响应的值是多少?
-
它有 json 响应。
-
解决这个问题的另一种方法是创建一个函数作为逻辑的包装器,并将函数中成功的响应对象作为参数传递。然后就可以在成功使用这个函数了。
-
value.dir_name怎么有.val()方法?那必须是一个 jQuery 元素。我对此表示怀疑,除非那是一些奇怪的数据。
标签: javascript jquery ajax