0

呼び出しで div の内容を更新しようとしてい$.getますが、失敗していますie(9).

jsこれです

function UpdateElementOfParent(box_id, page_ref, template_ref)
{
 $.get("get_content.php", { box_id: box_id, page_ref: page_ref, template_ref:template_ref } )
  .done(function(data) {                  
         $('#'+box_id).html(data);              
      });  
}

で、get_content.phpこれは

  <?php   
include("connect.php"); 
$page_ref = $_GET['page_ref'];  
$template_ref = $_GET['template_ref'];
$box_id = $_GET['box_id'];  
$sql = mysql_query("SELECT * FROM site_content WHERE page_ref='$page_ref' AND template_ref='$template_ref' AND box_id='$box_id' AND box_type='text'");
while($row=mysql_fetch_array($sql))  
    {  
      echo stripslashes($row['content']);  
    }  
   ?> 

それはうまく動作しますfirefox/chrome/safari and opera.

PHPはデータベースを更新しますが、div ("#"+box_id)更新しieません(ie9手元にあるだけなので、9つだけなのか他のバージョンなのかわかりません)

手がかりはありますか?

クイックアップデート

つまり、前の $.get 呼び出しからのデータがキャッシュに保持されているようです。基本的に、画面に div があり、ユーザーがボタンをクリックすると、レイヤーが開き、nicedit で編集可能なテキストエリアが表示されます。textarea に $.get が入力され、ユーザーが [保存] をクリックすると、レイヤーが非表示になり、親ページの元の div が同じ $.get 呼び出しで更新されます。

つまり、コンテンツを変更すると、データベースは更新されますが、div は更新されず、レイヤーを開くと、まだ古いデータが表示されます。

最初の $.get 呼び出しはこれです

$.get("get_content.php", { box_id: box_id, page_ref: page_ref, template_ref:template_ref } )
  .done(function(data) {         
      document.getElementById("edit_content").value=data; 
      area1 = new nicEditor({fullPanel : true}).panelInstance("edit_content",{hasPanel : true});              
      });  

警告されたデータはIEで更新されたテキストを表示しないため、間違いなく $.get 呼び出しと関係があります

4

3 に答える 3

0

質問が不完全であるため、これは回答ではありませんが、OP を支援するためにコード コメントを投稿する必要があります。

PHP は問題なく動作するとおっしゃっていたように、問題は IE が jQuery の動的セレクターを好まないことかもしれません。次のいくつかのオプションを試してください。

1) 次のように変更$('#'+box_id).html(data);します。

var id = '#'+box_id;
$(id).html(data);

2)IEが実際に要素を正しく取得したかどうかを確認するために、要素をログに記録するかアラートを出してみてください:

var elem = $('#'+box_id);
alert(elem);
elem.html(data);

[HTMLDivElement]要素がそこにある場合、これは as または同様のものとして表示されます。

3) 他のすべてが失敗した場合は、このバニラ JS が IE で動作するかどうかを確認し、jQuery セレクタの問題ではないことを確認します。

var elem = document.getElementById(box_id);
alert(elem);
elem.innerHTML = data;
于 2013-04-16T08:23:45.147 に答える
0

私は問題を理解しました。セレクターとは関係ありませんが、パラメーター variable のスコープとは関係ありませんbox_id

関数を次のように変更します。

function UpdateElementOfParent(box_id, page_ref, template_ref) {

    myBox = box_id;
    $.get("get_content.php", { box_id: box_id, page_ref: page_ref, template_ref:template_ref })
        .done(function(data) {                  
             $('#'+myBox).html(data);              
        });  
}

説明:

AJAX コールバック関数は、ローカル変数にアクセスできません。UpdateElementOfParent

于 2013-04-16T08:26:49.550 に答える