のjavascript:
// products is now filled with a json array
var products = jQuery('#spreadSheetWidget').spreadsheet('getProducts');
var postData = {
'action': action,
'products': products
}
submitPostForm(jQuery('#submitURLcreateorder').val(), postData);
コントローラで:
/**
* @Route("/varelager/bestilling", name="_varelager_bestilling")
* @Template()
*/
public function bestillingAction(Request $request) {
$products = $request->request->get('products', null); // json-string
$action = $request->request->get('action', null);
return $this->render(
'VarelagerBundle:Varelager:bestilling.html.twig',
array(
'postAction' => $action,
'products' => $products
)
);
}
テンプレート内(
function submitPostForm(url, data) {
var form = document.createElement("form");
form.action = url;
form.method = 'POST';
form.style.display = 'none';
//if (typeof data === 'object') {}
for (var attr in data) {
var param = document.createElement("input");
param.name = attr;
param.value = data[attr];
param.type = 'hidden';
form.appendChild(param);
}
document.body.appendChild(form);
form.submit();
}
( "提出" をクリックのような)いくつかのイベントの後bestilling.html.twig):
{% block resources %}
{{ parent() }}
<script type="text/javascript">
jQuery(function(){
//jQuery('#placeDateWidget').placedate();
{% autoescape false %}
{% if products %}
jQuery('#spreadSheetWidget').spreadsheet({
enable_listitem_amount: 1,
products: {{products}}
});
jQuery('#spreadSheetWidget').spreadsheet('sumQuantities');
{% endif %}
{% endautoescape %}
});
</script>
{% endblock %}
Alrite、私はそれはあなたがjQuery.ajax()を使用することができますフォームをシミュレートすることなく、何かを送信するために:)
EDIT を望んでいたものだと思います。 ここでは、ページリフレッシュをトリガーしない上記と同じ趣旨の例を示します。
jQuery.ajax({
url: jQuery('#submitURLsaveorder').val(),
data: postData,
success: function(returnedData, textStatus, jqXHR){
jQuery('#spreadSheetWidget').spreadsheet('clear');
window.alert("Bestillingen ble lagret");
// consume returnedData here
},
error: jQuery.varelager.ajaxError, // a method
dataType: 'text',
type: 'POST'
});
応答をありがとう。私は実際に週末このように働いています: $ JSON = file_get_contents( "php:// input"); この方法で問題が発生しましたか? – greg
'php:// input'は1回限りの読み込みです。一度コンテンツを読んだら、そのデータを渡さない限り、再び読むことはできません。 Symfony2 Requestオブジェクトを使うことで、 '$ JSON'変数などを渡すことなく、必要なときにリクエスト中にデータを再度取得できるようになります。 – richsage
説明をありがとう!私はあなたの方法に変更し、それは完全に動作しています。ありがとうございました。 – greg