0

ユーザーがお互いにいくらかのギフトを送ることができるフォームがあり、ギフトを送るときにそのような金額がかかることを知らせてほしい。ダイアログボックスを開くことはできましたが、ユーザーが [はい] をクリックしたときに ajax 送信を処理できません。サーバーに渡していません。ただし、ダイアログボックスなしで送信すると、正常に機能します。助けてください。前もって感謝します!ここにスクリプトがあります:

<div id="gift_sent" style="float: left; width: 370px; margin: 5px 0 5px 0; display: none;"><?php echo ucfirst(__('Gift Sent', true)) ?></div>

<div style="float: left; width: 370px; margin: 50px 0 10px 0;">

<?php // echo $this->Form->create('Gift', array('action' => 'sent/' . $user_obj['User']['id'] . '/' . $gift['GiftPhoto']['id'], 'div' => false, 'id' => "submit_".$gift['GiftPhoto']['id'])); ?>
<?php echo $this->Form->create('Gift', array('div' => false, 'id' => "submit_".$gift['GiftPhoto']['id'])); ?>

<?php echo $this->Form->input('user_id', array('type' => 'hidden', 'value' => $user_obj['User']['id'])); ?>
<?php echo $this->Form->input('sender_id', array('type' => 'hidden', 'value' => $user_object['id'])); ?>
<?php echo $this->Form->input('gift_id', array('type' => 'hidden', 'value' => $gift['GiftPhoto']['id'])); ?>

<?php echo $this->Form->input('description', array('label' => 'Greetings, 240 characters max', 'rows' => '5', 'style' => 'width: 350px;', 'div' => false )); ?>

<div class="clr"></div>

<?php echo $this->Form->end('Send'); ?>

</div>


<script type="text/javascript">
jQuery(document).ready(function() {

var link = "<?php echo $html->url("/gifts/sent/" . $user_obj['User']['id'] . '/' . $gift['GiftPhoto']['id']) ?>";

$( "#submit_<?php echo ($gift['GiftPhoto']['id']); ?>" ).submit(function( event ) {

event.preventDefault();

$("#dialog-confirm").dialog('open');
return false;
});

$("#dialog-confirm").dialog({
  resizable: false,
  height:190,
  autoOpen: false,
  width: 330,
  modal: true,
    buttons: {
            "Yes": function() {
$.ajax({
cache: false,
type: "POST",
data: $(this).serialize(),
url: link,
// url: "<?php echo $html->url("/gifts/sent/" . $user_obj['User']['id'] . '/' . $gift['GiftPhoto']['id']) ?>",
success: function() {
    $('#gift_sent').show();
    $(':input', '#submit_<?php echo ($gift['GiftPhoto']['id']); ?>')
    .not(':button, :submit, :reset, :hidden')
    .val('');
    }
        });
            $(this).dialog("close");
            },

            "No": function() {
            $(this).dialog("close");
            }
    }
});

});
</script>



<div id="dialog-confirm" title="Send a Gift">
<p>This Gift Cost <?php echo ($gift_cost); ?> Points to send. You sure you want to continue?</p>
</div>

これは、ダイアログ ボックスのない作業コピーです。

<script type="text/javascript">
jQuery(document).ready(function() {

$('#submit_<?php echo ($gift['GiftPhoto']['id']); ?>').bind('submit', function(event) {
$.ajax({
    cache: false,
    type: "POST",
    url: "<?php echo $html->url("/gifts/sent/" . $user_obj['User']['id'] . '/' . $gift['GiftPhoto']['id']) ?>",
    data: $(this).serialize(),

    success: function() {
    $('#gift_sent').show();
    $(':input', '#submit_<?php echo ($gift['GiftPhoto']['id']); ?>')
    .not(':button, :submit, :reset, :hidden')
    .val('');
    }
});
return false; 
});

});
</script>
4

1 に答える 1

0

こんにちは、コードにいくつかのエラーがあります:

  1. ボタンはいは引用され、いいえは引用されていません
  2. 送信ウォッチで作成されたフォームに 2 つのバインディングがあります。

    //every form in your code
    $('form').submit(function () {
        if (!submit) {
            $("#dialog-confirm").dialog('open');
            return false;
        }
    });
    
    //concrete one
    $('#submit_<?php echo ($gift['GiftPhoto ']['id ']); ?>').bind('submit',...);`
    

これを修正し、ブラウザでコンソールを実行して、問題があるかどうかを確認してください。そして、PHP と JS を混在させることはお勧めしません。私は本当に悪いようです。html 要素で data-xxx 属性を使用して、jQuery $().attr でそこに到達してみてください。

于 2013-11-04T22:04:48.283 に答える