Показать ответ ajax в чистом тексте и формате HTML - PullRequest
0 голосов
/ 03 сентября 2018

Я бы хотел создать прямой прокси на моем локальном компьютере с Apache. До сих пор я написал простую междоменную демонстрацию с прокси локально.

Вот файл /var/www/html/client.html:

<script src="http://127.0.0.1/jquery-3.3.1.js"></script>
<script>
function Ajax( ) {
     var url = 'http://127.0.0.1/do.php?url=http://127.0.0.1/test.html';
      $.ajax(url, {
        type:"GET",
        dataType: 'html',
        crossDomain: true,
            success:function(response){  
                mytext = document.getElementById("remote");
                mytext.append(response);
            },
            error: function (e) {
                alert("error");
            }    
      });
};
    </script>

    <input type="button" value="show content" onclick="Ajax();">    
    <p id="remote">the content on remote webpage</p>

Вот файл /var/www/html/do.phpdo.php, он функционирует как прокси, получает целевой URL:

/var/www/html/test.html

и отправьте как remote (показано в client.html), обратный вызов в client.html.

<?php
header('Access-Control-Allow-Origin: *');
echo file_get_contents($_GET['url']);
?>

Файл /var/www/html/test.html:

<p><b>you are welcome</b></p>

Чтобы ввести 127.0.0.1/client.html в браузер и нажать кнопку show content, я получу следующее:

the content on remote webpage<p><b>you are welcome</b></p>

Я хочу, чтобы ответ был переброшен в client.html из do.php, показан в двух видах:

  1. отображается как чистый текстовый формат.

    mytext.append(response.responseText);
    

    Это моя попытка, неудача.
    Результат, который я ожидаю в чистом текстовом формате:

    the content on remote webpage
    you are welcome  
    
  2. отображается в формате html.
    Что я ожидаю, HTML-формат:

enter image description here

Что я получаю в формате с моим кодом:

the content on remote webpage<p><b>you are welcome</b></p>

Как мне исправить мой код mytext.append(response);, может быть, здесь, для двух случаев?

Ответы [ 2 ]

0 голосов
/ 03 сентября 2018

Решены две проблемы, основанные на методе добавления jquery, вместо метода добавления javascript в моем простом коде.

1. чистый текстовый формат

mytext = $("#remote");
mytext.append("<br/>");
mytext.append($(response).text());

2.html формат

mytext = $("#remote");
mytext.append("<br/>");
mytext.append(response);

В javascript ParentNode.append () позволяет добавлять объект DOMString.
ParentNode.append () в js

mytext = document.getElementById("remote");
mytext.append(response);

Две строки выше приводят к следующему выводу.

content on remote webpage<p><b>you are welcome</b></p>
0 голосов
/ 03 сентября 2018
  1. Чтобы получить формат HTML, ваш код в порядке,
  2. Если вы хотите получить чистый текстовый формат, используйте функцию jQuery (...). Text () для удаления тегов html из ответа.

    ...
    mytext = document.getElementById("remote");
    mytext.append($(response).text());
    ...
    

Посмотрите: Как удалить HTML-теги с помощью jQuery?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...