我已经为JSON数据添加了一个属性,但是我无法访问它没有显示的JS数据。我不是Ajax和JSON的新手,但很明显,在Ajax方面,我的知识仍然存在差距。请帮助我理解如何将数据附加到我的Ajax响应中。
我在PHP控制器类中有这个:
$x = '5';
if($request->ajax()){
return response()->json([
'total_questions' => $x,
'responseText' => $e->getMessage(),
], 500);
}
我想用JS / JQuery访问total_questions属性..
我的JS AJAX回调在这里: console.log('errors - >',data.total_questions); - 返回undefined
$.ajax({
type:"POST",
url: APP_URL+"selfEvaluation/save",
data:$(this).serialize(),
dataType: 'json',
success: function(data){
console.log(data);
},
error: function(data){
var errors = data.responseJSON;
console.log('data -> ', data);
console.log('errors -> ', data.total_questions);
if(data.status == 422){
// alert('422');
}
}
});
答案 0 :(得分:0)
error: function(data){
是一种不正确的方法签名。请参阅http://api.jquery.com/jquery.ajax/的定义。 它应该是
error: function(jqXHR, errorThrown, textStatus){
。
您需要访问jqXHR.responseJSON
媒体资源。所以:
console.log('errors -> ', jqXHR.responseJSON.total_questions);
但我会质疑为什么你要回归" 500"此请求的状态代码,当它看起来是有效的响应时。 " 500"意味着"内部服务器错误",这意味着服务器崩溃,当它看起来没有。如果你返回" 200" (" OK")状态,你的ajax代码将进入"成功"回调你可以直接引用"数据"回调中的对象来读取您的数据。
答案 1 :(得分:-2)
如果您从浏览器获得json响应,请尝试此操作。
$xmlData = new SimpleXMLElement($xmlString);
$results = [];
$ii = 0;
foreach($xmlData->categories->category as $category){
$results[$ii]['id'] = isset($category->id) ? (string)$category->id : false;
$results[$ii]['parentId'] = isset($category->parent) ? (string)$category->parent : false;
$results[$ii]['name'] = isset($category->description) ? (string)$category->description : false;
$ii++;
}
echo '<pre>'.print_r($results,true).'</pre>';