У меня есть страница, которую я отредактировал после загрузки, и что я хочу сделать, это получить текущие HTML-страницы и передать их скрипту PHP.Javascript получить текущую страницу html (после редактирования)
Я впервые передал документ.documentElement.innerHTML, но это закончилось тем, что в нем собралась куча вычисленного мусора стиля вверху, которого я не хотел. После googling вокруг я обнаружил, что могу использовать ajax, чтобы получить копию текущего файла на сервере, а затем заменить отредактированную часть позже.
я могу получить копию файла с помощью этого:
var url = window.location.pathname;
var filename = url.substring(url.lastIndexOf('/')+1);
$.ajax({
url: filename,
async: false, // asynchronous request? (synchronous requests are discouraged...)
cache: false, // with this, you can force the browser to not make cache of the retrieved data
dataType: "text", // jQuery will infer this, but you can set explicitly
success: function(data, textStatus, jqXHR) {
origPage = data; // can be a global variable too...
// process the content...
}
});
Который работает отлично и получает меня HTML я ожидал увидеть и при просмотре страницы в блокноте.
Следующий шаг - это то, что я не могу понять. Все, что я хочу сделать, это поменять в innerHTML из в DIV с идентификатором «редактора» с тем, что текущее значение, поэтому я попытался это:
origPage.getElementById('editor').innerHTML = e.html;
Но я получаю ошибку «TypeError: не определено в а не функция ". Я должен делать что-то простое, что я чувствую, но я не знаю правильного форматирования, чтобы сделать это. Я попытался следующие варианты:
alert($(origPage).getElementById('editor').innerHTML);
//Different attempt
var newHtml = $.parseHTML(origPage);
alert($(newHtml).getElementById('editor').innerHTML);
//Different attempt
alert($(origPage).html().getElementById('editor').innerHTML);
Но я всегда получаю «Ошибка типа: не определено не является функцией» или «Ошибка типа: Не удается прочитать свойство„getElementById“неопределенных». Как я могу сделать это правильно?
EDIT:
Полная страница HTML ниже:
<!DOCTYPE html>
<html>
<body>
<div id="editor">
<h1>This is editable.</h1>
<p>Click me to start editing.</p>
</div>
\t
\t <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
<script type="text/javascript" src="snapeditor.js"></script>
<script type="text/javascript">
var editor = new SnapEditor.InPlace("editor", {onSave: function (e) {
\t var isSuccess = true;
\t //var origPage = e.html;
\t var origPage;
\t var url = window.location.pathname;
\t var filename = url.substring(url.lastIndexOf('/')+1);
\t // Actually perform the save and update isSuccess.
\t
\t // Javascript:
\t $.ajax({
url: filename,
async: false, // asynchronous request? (synchronous requests are discouraged...)
cache: false, // with this, you can force the browser to not make cache of the retrieved data
dataType: "text", // jQuery will infer this, but you can set explicitly
success: function(data, textStatus, jqXHR) {
origPage = data; // can be a global variable too...
// process the content...
}
});
\t //origPage shows expected html as this point
\t
\t //alert($(origPage).getElementById('editor').innerHTML);
\t //alert($(origPage).html().getElementById('editor').innerHTML);
\t $(origPage).getElementById('editor').innerHTML = e.html;//fails here
\t alert(origPage);
\t //alert(newHtml.getElementById('editor').innerHTML);
\t \t $.ajax({
\t \t \t data: {html: origPage, docName: 'example1.html'},
\t \t \t url: 'savePage.php',
\t \t \t method: 'POST', // or GET
\t \t \t success: function(msg) {
\t \t \t \t alert(msg);
\t \t \t \t isSuccess = true;
\t \t \t }
\t \t });
\t return isSuccess || "Error";
\t },
\t
\t onUnsavedChanges: function (e) {
\t if(confirm("Save changes?")) {
\t \t if(e.api.execAction("save")){
\t \t \t //location.reload();
\t \t }
\t } else {
\t \t e.api.execAction("discard");
\t }
\t }});
</script>
</body>
</html>
Помогло ли это? http://stackoverflow.com/questions/28700919/cannot-integrate-jquery-variable-into-rate.pdf/28701329#28701329 – gibberish
Вы отправляете запрос AJAX на ту же страницу, на которой вы находитесь, что приведет к HTML-странице текущей страницы возвращается. Это условие ошибки и обычно нежелательно. Пожалуйста, покажите нам весь ваш код (HTML и jQuery/js), чтобы мы могли лучше помочь вам. – gibberish
Хм, я не понимаю, как, но я могу что-то упустить? Я могу опубликовать новую информацию на моем php-скрипте просто отлично, что я не могу сделать, это получить текущую страницу как объект jquery, с которой я могу манипулировать innerHTML. – Bryan