CI框架中使用ajax提交,开始没有加 contentType ,打印页面报错:javascript
XMLHttpRequest {readyState: 4, timeout: 0, withCredentials: false, abort: function, onreadystatechange: function…}
parsererror
Invalid JSON: Disallowed Key Characters.php
添加contentType:"application/json; charset=utf-8",报错消失,后台能收到发送的数据;html
代码以下:java
html代码:ajax
<input id = 'test' type ="button" value="提交">json
js代码:segmentfault
<script type="text/javascript"> 数组
$('#test').click(function(){ app
var json = {
'sensor_name':123,
'alarm':45
};框架
alert(JSON.stringify(json));
//注意这里是单引号仍是双引号,后台PHP json_decode 转义的时候里面是双引号,因此再拼 变量 json 的时候,里面要使用单引号这样JSON.stringify(json)才会变成双引号;
$.ajax({
url:"<?php echo base_url();?>index.php/alarm_manage/alarm_manage/set_alarm_info",
type:"post",
//contentType:"application/json; charset=utf-8",
dataType:"json",
data:{data:JSON.stringify(json)},
error:function(XMLHttpRequest,textStatus,errorThrown){
console.log(XMLHttpRequest);
console.log(textStatus);
console.log(errorThrown);
},
success:function(msg){
console.log(msg);
}
});
})
</script>
后台PHP代码(对象转数组过程当中,注意单引号和双引号;)
public function set_alarm_info(){
$data = json_decode($_POST['data'],ture);
echo $data['sensor_name'];
}
参考:
https://segmentfault.com/q/1010000005329558?sort=created