我需要帮助!我想从Codeigniter服务器检索json数据。 这是我的html本地文件(d://myproject/index.html)
$.ajax({
type: "POST",
url : serverUrl+'mobcontroller/users/',
crossDomain: true,
async: false,
data : $("#formlogin").serialize(),
dataType : MobileJsonType[1],
beforeSend : function(){//do stuff here},
success : function(responseData) {
alert(JSON.stringify(responseData));
},
error : function(jqXHR, textStatus, errorThrown) {
// do stuff here
},
complete: function(xhr, settings){
alert(JSON.stringify(xhr)+'\n'+settings);
}
});
和codeigniter控制器看起来像这样
public function index()
{
$type_message = 'success';
$message = 'Mobile plateform';
$this->output->set_header("Access-Control-Allow-Origin: *");
$this->output->set_header("Access-Control-Expose-Headers: Access-Control-Allow-Origin");
$this->output->set_status_header(200);
$this->output->set_content_type('application/json');
$this->output->_display();
echo json_encode( array('type_message' => $type_message, 'message' => $message) );
}
我使用js错误
获取json数据响应Uncaught SyntaxError: Unexpected token :
请帮助我!
答案 0 :(得分:0)
将您的成功功能更改为
success: function(data) {
console.log(data)
}
让我们知道输出是什么。
我对codeigniter不熟悉,但有可能是$ this-> output-> _display();回声JS试图解析的东西?如果你放置
ob_clean();
以上
echo json_encode(...
它将清除将要发送回JS的缓冲区,这样只有你编码的JSON才能返回JS可以解析的内容。
答案 1 :(得分:0)
你的ajax请求应该是这样的。
$.ajax({
type: "POST",
url : serverUrl+'mobcontroller/users/',
crossDomain: true,
async: false,
data : $("#formlogin").serialize(),
beforeSend : function(){//do stuff here},
success : function(responseData) {
alert(JSON.stringify(responseData));
},
error : function(jqXHR, textStatus, errorThrown) {
// do stuff here
},
complete: function(xhr, settings){
alert(JSON.stringify(xhr)+'\n'+settings);
}
});
我删除了propertydata dataType : MobileJsonType[1]
您也不需要使用JSON.stringify
。
由于php json_encode
您所面临的错误归因于beforeSend
,因为beforeSend
首先命中服务器以检查是否允许请求。如果它发送为true,则实际请求将继续,否则您需要自己处理它。我假设你需要发送一些带有序列化数据的令牌。希望能帮助到你。如果您删除属性beforeSend
,我认为该请求将正常工作。