我对我正在制作的部分应用程序感到烦恼。
我需要发送一个AJAX请求来从XML文件中获取一些信息。服务器应该以子格式返回信息。我一直在服务器和客户端代码中使用相同的代码。所有其他功能都有效。此功能甚至没有收到回复
在PHP服务器上我有这个代码: Main.php:
if($_GET["fn"] == "rLoad")
{
echo $handlerP->toJSON($handlerP->getPRoles($_GET["projectID"]));
}
ProjectHandler.php:
function getPRoles($projectID){
$sort = new ModuleSorter();
$xml = self::getxml();
$result = array();
foreach($xml->children() as $project){
if($project->id == $projectID){
foreach($project->roles->children() as $role){
array_push($result, array('id' => $role->id, 'name' => $role->name));
}
}
}
$res = $sort->alphabetically($result);
return $res;
}
function toJSON($data){
$result = json_encode($data);
return $result;
}
function getXml(){
$xml=simplexml_load_file("../data/projects.xml") or die("ERROR: Unable to read file");
return $xml;
}
从客户端我使用以下代码:
function loadRoles(project){
console.log("Starting role retrieval")
var data = {
"fn" : "rload",
"projectID": project,
"ajax" : "true"
};
$.ajax({
type: "GET",
url: SERVICE_URL,
data: data,
contentType: "application/json",
success: function(response) {
var i, list = "";
console.log(response);
for (i = 0; i < response.length; i++) {
list += formatOption(response[i].id[0], response[i].name[0]);
$("#theRole").html(list).selectmenu('refresh');
}
},
done: function(response){
console.log(response);
}
});
console.log("end of role retrieval");
}
我没有从console.logs得到任何响应,当我从google chrome的开发人员工具查看网络标签时,我看到了消息this request has no response data available
项目XML文件的示例:
<projects>
<project>
<id>adultScotland</id>
<name>Adults(Scotland)</name>
<roles>
<role>
<id>projectM</id>
<name>Project Manager</name>
</role>
</roles>
</project>
</projects>
如果有人能看到这个问题的原因,我将非常感谢你的帮助:)
由于
答案 0 :(得分:2)
您正在发送此
var data = {
"fn" : "rload",
"projectID": project,
"ajax" : "true"
};
您正在从客户端和服务器上发送fn = rload
if($_GET["fn"] == "rLoad")
{
echo $handlerP->toJSON($handlerP->getPRoles($_GET["projectID"]));
}
您正在将其与rLoad进行比较。这永远不会成真。 'RLOAD'!= 'RLOAD'
答案 1 :(得分:0)
在客户端尝试使用dataType:'xml',并检查请求的域是否与源不同。