【发布时间】:2013-11-19 15:16:07
【问题描述】:
我遇到了 Symfony 和 ajax 调用的麻烦。
我在带有 XAMPP 1.8.2 的 Windows 8 上的本地服务器中。
每个都很好,但是当我收到回复时,我在右文本下方有这个:
HTTP/1.0 200 OK Cache-Control: no-cache Date: Tue, 19 Nov 2013 14:58:18
为什么?
我的代码:
在底部的 HTML (Twig) 中:
$.ajax({
url: "{{ path('score') }}",
data: { id: scoreid, value: value },
dataType: 'json',
type: 'POST',
success: function (data) {
if(data.responseCode==200 ){
$('#score').html(data.score);
$('#score').css("color","green");
}
else if(data.responseCode==400){
$('#score').html(data.score);
$('#score').css("color","red");
}
else{
alert("An unexpeded error occured.");
$('#score').html(data);
}
},
error: function (jxhr, msg, err) {
$('#score').html('<span style="color:red">Error!</span>');
}
});
控制器“分数”:
class scoreController extends Controller
{
public function onepointAction(Request $request) {
....some logical...
$points = self::pointsAction($id);
$return=array("responseCode"=>200, "score"=>"Score: ".$num.".", "goal"=>"".$points);
}
else {
$return=array("responseCode"=>400, "score"=>"No good!");
}
$return = json_encode($return);
return new Response($return,200,array('Content-Type'=>'application/json'));
}
public function pointsAction($id) {
......some logical query... ended by:
->getQuery();
$pointsOk = $query->getResult();
$avgScore = $avgScore[0]["score_avg"];
$numScore = $avgPoints[0]["score_count"];
$points = ("Scores: ".$avgScore."Goals: ".$numScore);
return new Response($points);
}
}
我在哪里出错了?
【问题讨论】:
-
嗨@ginolin!此行中的 $num 是什么:
$return=array("responseCode"=>200, "score"=>"Score: ".$num.".", "goal"=>"".$points);!您可以在 $return 之前发布 $points 转储吗? -
$points(pointsAction) 的转储是这样的:string(53) "Scores: 5.8021Goals: 96"转储中没有标头。我把var_dump放在return new Response($points);之前,我不是从第一个控制器的同一根树枝上取的,我只从pointsAction控制器的简单路径中取它。 -
您的代码似乎非常正确,因为您在
dataType参数中使用了json值。尝试在控制器的操作中使用JsonResponse。就我而言,我使用了这个类。 -
尝试查看
JSONStringfy以在不使用dataType参数的情况下将data转换为json -
我找到了解决我的大问题的方法:
->getContent()at the end of $points =self::pointsAction($id);
标签: php ajax http symfony header