0

現在の javascript/ajax リクエストに問題があります。.append次のコード内から Jquery ダイアログを開こうとしています。

for (var i in rows)
{
  var row = rows[i];          
  var id = row[0];
  var NewEdit = row[0];
  var PreviousEdit = row[1];
  var FunctionName = row[2];
  var FunctionID = row[2]
  function ShowInfo() 
  {
    dialog('Original: <br>'+PreviousEdit+'<br><br> New: <br>' +NewEdit);
  }
  $('#RecentEdits').append("<br>Page: <a href=Page.php?ID="+FunctionID+">"+FunctionName+"</a> - <a href='#' OnClick='ShowInfo()'>Info</a>");
} 

必要に応じて、関数全体を投稿できます。

実際、変数が出力されているため、変数が正しく設定されていることはわかっています。

Javascript 関数内から詳細情報を表示するダイアログ ボックスを開くにはどうすればよいですか?


解決:

正解はないので。私は OQJF の例を使用して、これを作成しました。

    <script>
function ShowInfo(a,b) 
      {
       alert('Original: \n'+unescape(a)+'\n\n New: \n'+unescape(b));
      };
    </script>
   <script>
//window.setInterval(function()
//{
  $(function () 
  {
    $.ajax({                                      
        url: 'RecentUpdates.php', data: "", dataType: 'json',  success: function(rows)        
        {
        $('#RecentEdits').empty();

            for (var i in rows)
            {
                var row = rows[i];          
                var id = row[0];
                var NewEdit = row[0];
                var PreviousEdit = row[1];
                var FunctionName = row[2];
                var FunctionID = row[3];
                $('#RecentEdits')
                .append("<br>Page: <a href='Page.php?ID="+FunctionID+"'>"+FunctionName+"</a> - ");
                $('#RecentEdits').append("<input type='button' onClick=ShowInfo('"+escape(PreviousEdit)+"','"+escape(NewEdit)+"'); value='Show'>");
            } 
        } 
    });       
  });
// }, 1000);
  </script>

これにより、Javascript の出力から関数にアクセスできるようになりました。

HTML を囲む引用符に問題があったため、2 つの追加を行うことにしました。そして、これはうまくいくようです!

4

1 に答える 1

0

まず、関数 showInfo をループの外側に設定し、2 つのパラメーターを設定する必要があると思います。以下は私がテストしていないサンプルコードですが、ほぼこのようになっているはずです。

 function ShowInfo(orginVal,newVal) 
      {
        var msg =('Original: <br>'+orginVal+'<br><br> New: <br>' +newVal);
        $(<div>msg</div>).appendTo('body).dialog();//maybe you can add some options for dialog
      }

以下の部分は別の関数のようです。

    for (var i in rows)
    {
      var row = rows[i];          
      var id = row[0];
      var NewEdit = row[0];
      var PreviousEdit = row[1];
      var FunctionName = row[2];
      var FunctionID = row[2]

      $('#RecentEdits').append("<br>Page: <a href=Page.php?ID="+FunctionID+">"+FunctionName+"</a> - <a href='#' OnClick='ShowInfo(/*add your 2 parameters here*/)'>Info</a>");
    } s
于 2013-03-08T02:30:32.510 に答える