我使用以下代码使用AJAX post获取OneDrive和子文件夹的根文件夹列表。
$(document).ready(function(){
$(".driveFolders li").click(function(){
var folderId = $(this).attr( "id" );
var objlst= $(this);
var request;
request = $.ajax({
url: url,
method: "POST",
data: {'id': folderId},
ContentType: 'application/json'
});
request.done(function( response ) {
var result = jQuery.parseJSON(response);
var html="";
for(var i = 0, l = result.length; i < l; i++){
var subFolderID = result[i].id;
html += "<li id="+subFolderID+"'>" + result[i].name + "</li>";
}
$("#childern").html(html);
});
})
})
它返回所有文件和文件夹的列表。现在,我得到了AJAX来生成li元素的数据,我正在使用以下代码再次发送一个AJAX请求:
$(document).on("click", "#childern li", function () {
var subFolderID = $(this).attr("id");
var objlst = $(this);
var request;
request = $.ajax({
context: this,
url: url,
method: "POST",
data: { 'id': subFolderID },
ContentType: 'application/json'
});
request.done(function (response) {
var result = jQuery.parseJSON(response);
var html = "";
for (var j = 0, l = result.length; j < l; j++) {
}
$("#childern").html(html);
});
});
它返回错误
文件夹不存在。
手动发送文件夹ID时,我会收到所有文件。这是我的控制器代码:
public function GetFolderContent(){
$this->load->library('STOneDrive');
if (!$this->stonedrive->is_Connected) {
$refreshToken = "";
$this->stonedrive->Reconnect($refreshToken);
}
$contents = $this->stonedrive->LoadRootFolders(urldecode($this->input->post('id')));
$result = array();
foreach($contents as $content){
array_push($result,array('id' => $content->getId(),'name'=>$content->getName(),'size'=> ''));
}
echo json_encode($result);
}
答案 0 :(得分:0)
将标签附加到li标签时出错: 改变
html += "<li id="+subFolderID+"'>" + result[i].name + "</li>";
以下
html += "<li id='"+subFolderID+"'>" + result[i].name + "</li>";
答案 1 :(得分:0)
在ajax代码方法中,将类型替换为内容类型,并使用 dataType 替换。