0

私は標準的な設定をしています。データを提供するphpページがあります。データ内にはいくつかの編集リンクがあります。私の問題は、いくつかのデータを編集した後、2回目に編集リンクをクリックすると、JQuery-UI.dialogにデータを入力する代わりに、渡されたURLでJQuery-UIが開くことです。

ベースページJava(view.php)

   var editParyAddress = $('#edit_party_address').dialog({
      autoOpen: false,
      width:'auto',
      modal: true,
      buttons: {
        'Save': function(){
          $.ajax({
            url: '/party_address/save.php',
            type: 'POST',
            data: $('#edit_party_address_form').serialize(),
            success: function(data){
              $.get('helper.php?function=partyaddress&id=<?php echo $_GET['id'];?>',function(data){$('#partyaddress').html(data);});
              //$('#edit_party_address').dialog('close');
              $('#edit_party_address').dialog("destroy").remove();
            }
          });
        }
      }
    });

    $('.edit_party_address').click(function(e){
      e.preventDefault();
      $.ajax({
        url: $(this).attr('href'),
        type: 'POST',
        success: function(data){
          editParyAddress.html(data);
          editParyAddress.dialog('open');
          return false;
        }
      });
    });

データをJQueryにフィードするPHPページ-UI.dailog(edit.php)

$sql="SELECT dbo.format_full_name(p.first_name,p.middle_name,p.last_name) name, dp.party_id, pa.id partyaddressid, pa.address1,pa.address2,pa.city,pa.state,pa.zip_code,pa.address_indicator_id,pa.is_active
FROM [".DB1."].[DBO].[party_address] pa
INNER JOIN debt_party dp on dp.party_id=pa.party_id
INNER JOIN party p on p.id=pa.party_id
where pa.id=".$_GET['party_address_id'];
$HTML='';
$conn =db_connect();
$stmt = sqlsrv_query($conn, $sql,array(),array( "Scrollable" => 'keyset' ));
if( $stmt === false) { error($_SERVER['PHP_SELF'],__FUNCTION__,__LINE__);return;}

$HTML= '<form name="edit_party_address_form" id="edit_party_address_form" style="width:100%" action="">';
if ($stmt===false) {return;}
if (sqlsrv_has_rows( $stmt )=== false){return;}
$row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_ASSOC);
$HTML.='<fieldset>';
$HTML.='<ol>';
$HTML.='<li><label for="address_address1">Address 1:</label><input class="text-input" id="address1" name="address1" size="30" type="text" value="'.$row['address1'].'"></li>';
$HTML.='<li><label for="address_address2">Address 2:</label><input class="text-input" id="address2" name="address2" size="30" type="text" value="'.$row['address2'].'"></li>';
$HTML.='<li><label for="address_city">City:</label><input class="address" id="address_city" name="address_city" size="30" type="text" value="'.$row['city'].'"></li>';
$HTML.='<li><label for="address_state">State:</label><input class="state" id="address_state" name="address_state" maxlength="2" size="2" type="text" value="'.$row['state'].'"></li>';
$HTML.='<li><label for="address_zip_code">Zip Code:</label><input class="zip_code" id="address_zip_code" maxlength="10" name="address_zip_code" size="10" type="text" value="'.$row['zip_code'].'"></li>';
$HTML.='<li><label for="name">Indicator:</label>'.HTMLOptions(DB1,'dbo','address_indicator','id','name',$row['address_indicator_id']).'</li>';
$HTML.='<li><label for="is_active">Active:</label><input '.($row['is_active']==1? ' checked="checked"':'').' name="is_active" maxlength="2" size="2" type="checkbox" value="'.$row['is_active'].'"></li>';
$HTML.='<li><input id="party_address_id" name="party_address_id" type="hidden" value="'.$_GET['party_address_id'].'"></li>';
$HTML.='</ol>';

$HTML.='</fieldset>';
$HTML.='</form>';
sqlsrv_free_stmt( $stmt);
echo $HTML;

PHP保存ページ(save.php)

$sql="UPDATE party_address SET address1='".$_POST['address1']."',address2='".$_POST['address2']."'  WHERE id=".$_POST['party_address_id'];   

    $conn =db_connect();
    $stmt = sqlsrv_query($conn, $sql,array(),array( "Scrollable" => 'keyset' ));
    if( $stmt === false) { error($_SERVER['PHP_SELF'],__FUNCTION__,__LINE__);return;}
    sqlsrv_free_stmt( $stmt);

このような編集リンクをクリックする/party_address/edit.php?party_address_id=1468941と、すべてが完全に機能します。投稿されたフォームの変更を送信すると、データベースとview.phpベースページが正常に更新されます。変更を送信した後、2回目に編集リンクをクリックすると、リンクはデフォルトの動作を利用し、ブラウザのアドレスが編集リンクに変更されます。これは、view.phpページの内部HTMLを示しているだけです。JQuery-UI.dialogで開く必要があります<div id="edit_party_address" title="Edit Party Address"></div>

4

1 に答える 1

0

ベースページJava(view.php)の2行を変更 しました。わかりやすくするために、ここにコメントを残しました。今それは動作します!!!

var editParyAddress = $('#edit_party_address').dialog({
  autoOpen: false,  width:'auto',  modal: true,
  buttons: {
    'Save': function(){
      $.ajax({
        url: '/party_address/save.php',
        type: 'POST',
        data: $('#edit_party_address_form').serialize(),

        success: function(data){
          alert(data);
          $.get('helper.php?function=partyaddress&id=<?php echo $_GET['id'];?>',function(data){$('#partyaddress').html(data);});
          $('#edit_party_address').dialog('close');
          //$('#edit_party_address').dialog("destroy").remove();
        }
      });
    }
  }
});
// $('.edit_party_address').click(function(e){
$(document).on('click', '.edit_party_address', function (e) {
    e.preventDefault();
    $.ajax({
    url: $(this).attr('href'),
    type: 'POST',
    success: function(data){
      editParyAddress.html(data);
      editParyAddress.dialog('open');
      return false;
    }
  });
});
于 2013-02-28T17:22:19.523 に答える