2012-02-10 30 views
0

CakePHP 2.0でJsHelperを試してみましたが、フォームフィールドの値をAJAX呼び出しの結果で更新するRequestメソッドがありました。ただし、フォームフィールドを検査する上では述べています:フォームフィールドをjsで更新しましたが、送信されたデータには表示されません

<input type="hidden" id="JobsPartUnitcost" name="data[JobsPart][unitcost]">5.55</input> 

が、ときに私はそれをコピーして、最初のそれは

<input type="hidden" id="JobsPartUnitcost" name="data[JobsPart][unitcost]"></input> 

とするとき、私は値が空だったフォームを送信したと述べた上で、それを貼り付けました。ブラウザに値が表示されているのはなぜですか?マック/サファリ、CakePHPの2.0を使用して

、jQueryの

EDIT ここで要求されたフォームデータが

Array ([JobsPart] => Array ([job_id] => 1 [company_id] => 4 [part_id] => 2 [qty] => 3 [unitcost] =>)) 

をダンプされ、ここでAJAXコードであるとして

$this->Js->get('#JobsPartPartId')->event('change', 
    $this->Js->request(
     array(
      'controller'=>'JobsParts', 
      'action'=>'getPart' 
     ), 
     array(
      'update'=>'#JobsPartUnitcost', 
      'async' => true, 
      'method' => 'post', 
      'dataExpression'=>true, 
      'data'=> $this->Js->serializeForm(array(
       'isForm' => false, 
       'inline' => true 
      )) 
     ) 
    ) 
); 
+0

あなたは隠された人からどのように価値を得ていますか、あなたはajax投稿のコードを遡ることができますか? –

+0

コピー/ペーストのサブ質問は、ブラウザがページソースをどのように表示するかと関係があります - ほとんどのブラウザ(特にサファリに話すことができません)では、「現在の状態」のソースではなくオリジナルのページソースがダウンロードされますあなたは "ソースを見る"を行います。さらに情報なしで他の質問に話すことはできません - フォームを設定しているJSを投稿して、サーバーに送信されているものをダンプしてください。 –

+0

OK。私は回避策を見つけましたが、誰も見つけない限り、回答として投稿しません。私の静的ビューでは、入力フィールドがとなっています。私のAjaxコールは '#part'を更新し、ダイナミックビュー(コントローラajaxアクションによって呼び出されたもの)はフィールド全体を出力するようになりました<?php echo $ this-> Form-> input( 'unitcost'、array( 'type '=>' text '、' value '=> $ part [' Part '] [' costamount '])); ?>。醜いが、それは動作します。 – khany

答えて

0

OK。私は回避策を見つけましたが、他の誰も直接解決策を見つけたようです。

私の静的ビューでは、入力フィールドがあった場所は<td id="part"></td>となりました。私のAjaxコールは '#part'を更新し、ダイナミックビュー(コントローラajaxアクションによって呼び出されたビュー)はフィールド全体(<?php echo $this->Form->input('unitcost', array('type' => 'text', 'value' => $part['Part']['costamount'])); ?>)を出力するようになりました。醜いが、それは動作します。

3

ます値の属性を設定する必要があります:

<input type="hidden" value="YOUR VALUE HERE" name="data[Etc][field]" /> 

入力タグに値をラップしません。

+0

'値'のようにラップされた値は、伝統的なタグと見なされるため、値としてブラウザに表示されます。 –

+0

私はそれほど考えました。だから、私が今示しているコードに基づいて、私はそれをどうやって行うのだろうか? – khany

+0

どのように非表示の入力フィールドを生成していますか? –

0
$this->Js->get('#JobsPartPartId')->event('change', 
$this->Js->request(
    array(
     'controller'=>'JobsParts', 
     'action'=>'getPart' 
    ), 
    array(
     'success'=>'$("#JobsPartUnitcost").val(data)', 
     'async' => true, 
     'method' => 'post', 
     'dataExpression'=>true, 
     'data'=> $this->Js->serializeForm(array(
      'isForm' => false, 
      'inline' => true 
     )) 
    ) 
) 

);

+0

この行に出席しましたか? 'success' => '$( "#JobsPartUnitcost").val(data)'、 –

関連する問題