1

AJAXを使用してコンテンツをプレースホルダーにロードしています。PHPコードはfile_get_contentsを使用して必要なページを取得し、それをAJAX応答に返してプレースホルダーに入れます。私が抱えている問題は、取得されているコンテンツが実際に変更されていることです。たとえば、htmlタグが存在しなかった場所に配置されているようです。コードは次のとおりです。

function getPreview() { 
    var indexe = ajax.length;
    ajax[indexe] = new sack();
    var form = document.getElementById('form');
    ajax[indexe].setVar("prevsub", form.ebay_preview_submit.value);
    ajax[indexe].method = 'POST';
    ajax[indexe].requestFile = "../admin/model/catalog/getEbay.php";
    ajax[indexe].onCompletion = function(){ createPreview(indexe) };
    ajax[indexe].runAJAX();
}

function createPreview(indexe) {    
    var obj = document.getElementById('preview_ph');
    obj.innerHTML = ajax[indexe].response;
}

したがって、すべてがこのプレースホルダー内に配置されます。
<div id="preview_ph" ></div>

これがグラブを行うPHPです:

if(isset($_POST['prevsub'])){
$template_viewer = http://localhost:8888/admin/view/template/ebay/template_viewer.php';
$file_got = file_get_contents($template_viewer); 
echo $file_got;
}

そして、ここにそれが何であるかとそれがそこに追加しているもののスニペットがあります...

察するに:

Sign up for Newsletter</a> </div></td>

しかし、代わりにそれは変更されます:

Sign up for Newsletter</a></td></tr>

別の、あるはずです:

bidding! </span>
</div>
</td></tr>

しかし、次のように変更されます。

bidding! </span>
</div>
</td></tbody>

取得したページから合計7回コンテンツを変更します...これについて何か説明はありますか?

このページはブラウザで完全に開き、AJAXまたはfile_get_contentsによって何らかの形で深刻に変更されており、私は完全に困惑しています...

ご協力いただきありがとうございます!

4

1 に答える 1

1

私には、これはブラウザが.innerHTML操作時にHTMLをサニタイズしているように見えます。あなたが出力するHTMLは明らかに有効ではないので、それは自己防衛の行為ですよね?

最終結果は次のようになります

<div id="preview_ph" > 
 Sign up for Newsletter
  </a>          <--- broken 
   </div>       <--- broken
    </td>       <--- broken
 </div>

そのコードはDOMを壊してしまうので、ブラウザは可能な限りそれを修正しようとする必要があります。

なぜこれらの終了タグをAJAXを介して出力するのですか?

于 2010-07-05T07:40:08.900 に答える