我正在使用Symfony 2.7并且我从数据库查询信息并在页面上显示它但是我想通过Aji调用通过api连接通过单击按钮获取当前值但是我总是从Ajax Controller获得空响应
<div>
<p id="product">1K0615301M1</p>
<p id="product">1K0615301M2</p>
<input type="button" id="submit" value="Check"/>
</div>
<script>
$(document).ready(function(){
$('#submit').click(function(event) {
var productNr = [];
$('#product').each(function() {
productNr.push($(this).html());
});
console.log(ProductNr); // value of ProductNr
var ajaxRequest;
event.preventDefault();
ajaxRequest = $.ajax({
url: " {{ path('frontend_api_product') }}",
type: "post",
processData: false,
contentType: 'application/json; charset=UTF-8',
data: ProductNr,
success: function (data) {
console.log(data);
}
});
});
});
</script>
我的控制器:
public function AjaxAction(Request $request)
{
$sparepart = $request->request->get('data');
if ($request->isXMLHttpRequest()) {
return new JsonResponse(array(
'sucess'=> true,
'data' => $sparepart
));
}
return new Response('This is not ajax!', 400);
}
CONSOLE.LOG
Object { sucess: true, data: null }
答案 0 :(得分:1)
由于您的数据对象没有data
键,因此您无法通过执行$request->request->get('data');
要获取整个对象,请使用$data = $request->request->all();
您的代码中存在许多错误
您正在推动productNr
而不是ProductNr
中的值
你有许多具有相同id的元素(一个id是uniq,你必须使用类)。
修改强>
问题在于您发送的数据的格式。
要发送{"data":["1K0615301M1","1K0615301M2"]}
之类的对象,请使用:
var ProductNr = { data: [] };
var ajaxRequest;
$('.product').each(function() {
var product = $(this).text();
ProductNr.data.push(product);
});
ajaxRequest = $.ajax({
url: "/ajax",
type: "POST",
data: JSON.stringify(ProductNr),
processData: false,
success: function (data) {
console.log(data);
}
});
在发送数据之前使用JSON.stringify
序列化数据
见How do I POST an array of objects with $.ajax (jQuery or Zepto)
答案 1 :(得分:0)
更改
data: ProductNr,
到
data:{data:ProductNr}