問題
フォームを使いやすくするためにAJAX応答をいじることができるように、AJAX応答を取得しようとしています。コントローラ(以下のコード)にで通常の応答を返すようvar_dump()
にすると、オブジェクトの出力が得られるので、クエリが間違っていないことがわかります(ID 1を使用してデバッグするクエリを使用しています)。ただし、で出力を返すとjson_encode()
、空のJSONファイルが返されます。
ビュー内のHTMLフォーム
<div id="content">
<form id="myForm" action="{{path('snow_ajax')}}" method="POST" >
Write your name here:
<input type="text" name="name" id="name_id" value="" /><br />
<input type="submit" value="Send" />
</form>
</div>
同じビューのスクリプト
<script type="text/javascript">
$(document).ready(function() {
$("#myForm").submit(function(){
var url=$("#myForm").attr("action");
$.post(url,{
formName:"ajaxtest",
other:"attributes"
},function(data){
if(data.responseCode==200 ){
alert("Got your json!");
}
else{
alert("something went wrong :(");
}
});
return false;
});
});
</script>
通常の応答のコントローラー(動作)
public function ajaxAction()
{
$location = $this->getDoctrine()->getRepository('SnowFrontBundle:Location')
->find(1);
$output = var_dump($location);
return $output;
}
AJAX応答のあるコントローラー(機能せず、空のJSONを返します)
public function ajaxAction()
{
$location = $this->getDoctrine()->getRepository('SnowFrontBundle:Location')
->find(1);
return new Response(json_encode($location), 200);
}
誰かがここで私を助けてくれませんか?これは私を狂わせています!