Javascript Can';t使用Ajax、PHP、Json和Laravel(PHP框架)解决代码
无法访问从php函数(使用laravel框架)发送到ajax调用的json编码数据。 我正在对数据库结果进行编码 这是我正在使用的php函数 公共函数newLearner(){ 在javascript方面,我使用了:Javascript Can';t使用Ajax、PHP、Json和Laravel(PHP框架)解决代码,javascript,php,ajax,json,laravel,Javascript,Php,Ajax,Json,Laravel,无法访问从php函数(使用laravel框架)发送到ajax调用的json编码数据。 我正在对数据库结果进行编码 这是我正在使用的php函数 公共函数newLearner(){ 在javascript方面,我使用了: function newLearner() { var firstname = $('input[name=new_first_name]').val(); var lastname = $('input[name=new_last_name]').val(); va
function newLearner() {
var firstname = $('input[name=new_first_name]').val();
var lastname = $('input[name=new_last_name]').val();
var student_id = $('input[name=new_id]').val();
//alert(firstname);
var URL = "/teghlearner/public/admin/newLearner";
var info ={
"firstname":firstname,
"lastname" : lastname,
"student_id" : student_id
};
$.ajax({
type: "post",
url: URL,
data : info,
success: function(result) {
//alert(result['first_name']);
for(var i=0;i<result.length;i++){
var item=result[i];
alert(item['first_name']);
alert(item['last_name']);
}
},
error: function(jqXHR, textStatus, errorThrown) {
$('#data').html(result);
}
});
}
And this is the JSON Returned from the php function
[
{
"id": 24,
"title": "Mr",
"first_name": "Patrick",
"last_name": "Vinc",
"gender": "male",
"email": "nupur@gmail.com",
"password": "$2y$10$yCyGBOtX6kF3ghy/k8YuXe4wR9W5hYtTGDkl5trTEd7.s5LntOQ.u",
"phone_type": null,
"phone_number": "0000000000",
"pager_number": "00000000000000",
"address_line_1": "",
"address_line_2": "",
"city": "",
"postal_code": "",
"province": "BC",
"country": null,
"emc_contact": "",
"emc_phone": "000000000000000000",
"emc_relation": "",
"passcode": "",
"locker": "999999",
"combination": "abc567",
"its_username": null,
"its_password": null,
"dictation_number": null,
"emailed": 1,
"signed": 0,
"student_num": "12345634",
"level": "Default",
"persist_code": "",
"activated_at": "2014-08-23 16:04:18",
"program": null,
"school": "",
"service": "",
"undergrad_year": null,
"undergrad_level": null,
"activated": 1,
"activation_code": "",
"undergrad_text": null,
"cpso_num": 0,
"start_date": "2014-08-01",
"end_date": "2014-08-31",
"learner_start_date": "0000-00-00",
"learner_end_date": "0000-00-00",
"vacation_start_date": "0000-00-00",
"vacation_end_date": "0000-00-00",
"physician": "1",
"affiliates": null,
"mask": "",
"mask_fit_month_year": "",
"learner_type": null,
"status": 1,
"last_login": "0000-00-00 00:00:00",
"reset_password_code": "",
"permissions": "",
"created_at": "-0001-11-30 00:00:00",
"updated_at": "2014-08-22 21:27:17"
}
]
函数newLearner(){
var firstname=$('input[name=new_first_name]')。val();
var lastname=$('input[name=new_last_name]')。val();
var student_id=$('input[name=new_id]')。val();
//警报(名字);
var URL=“/teghlearner/public/admin/newLearner”;
风险值信息={
“名字”:名字,
“lastname”:lastname,
“学生id”:学生id
};
$.ajax({
类型:“post”,
url:url,
数据:信息,
成功:功能(结果){
//警报(结果['first_name']);
对于(var i=0;i而言,问题在于响应上的内容类型是text/html。这使jquery认为响应是html。在这种情况下,jquery不会解析json。要解决此问题,只需删除json_编码。您的laravel控制器应如下所示:
$first_name = Input::get('firstname');
$last_name = Input::get('lastname');
$student_id = Input::get('student_id');
if(!empty($first_name) && empty($last_name) && empty($student_id)) {
return Learners::where('first_name','=',$first_name)->get();
}
这是因为当您返回集合时,Laravel将自动将其转换为json,并将内容类型设置为application/json
还要注意的是,您应该使用输入facade来获取post变量,而不是使用_postsuperglobal。您甚至从php脚本中返回了一些东西吗?请使用浏览器开发工具。@CharlotteDunois是的,我从php中获取json数据。我已经提到了我作为json获取的结果。如果您不确定您的实际的数据结构如下所示,然后将您收到的响应AJAX调用的对象记录到浏览器控制台,以便您可以对其进行检查。@CBroe这是我作为结果得到的JSON格式[{“id”:24,“title”:“Mr”,“first_name”:“Patrick”,“last_name”:“Vinc”,“gender”:“男性”,“开始日期”:“2014-08-01”,“结束日期”:“2014-08-31”,“学习者开始日期”:“0000-00-00”,“学习者结束日期”:“0000-00-00”,“假期开始日期”:“0000-00-00”,“假期结束日期”:“0000-00-00”您的JSON无效。假期结束日期后的最后一个逗号正在创建无效的JSON字符串。您是否尝试过Response::JSON而不是JSON编码?
$first_name = Input::get('firstname');
$last_name = Input::get('lastname');
$student_id = Input::get('student_id');
if(!empty($first_name) && empty($last_name) && empty($student_id)) {
return Learners::where('first_name','=',$first_name)->get();
}