Кажется, этот вопрос уже задавали много раз, но ни одно решение у меня не работает. Я новичок в AJAX, может быть, есть некоторые основы, которые я пропустил? В основном я просто хочу передать содержимое абзаца html в сценарий PHP, и я не хочу использовать форму html.

У меня есть два файла: tes.html

<!DOCTYPE html>
<html>
<head>
<title>Test</title>
<script type="text/javascript" src = "http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.8.0.min.js"></script>
<script type="text/javascript">
    $(document).ready(function(){
       $("#post").click(function(){
          var getContent = $("#text").html();
          $.ajax({
             url:"tes.php",
             type:"POST",
             data:{text:getContent},
             dataType:"html",
          });
       });
     });
</script>
</head>
<body>
    <p id="text" contenteditable="true">This is the content</p>
    <a href="tes.php" target="_blank"><button id="post">post 2</button></a>
</body>
</html>

И test.php

<?php
    if (isset($_POST['text'])) {
        $content = $_POST['text'];
        echo $content;
    } else {
        echo "no content";
    }
?>

После того, как я нажал кнопку «Опубликовать», в файле PHP возвращается

Примечание : неопределенный индекс: текст в C: \ xampp \ htdocs \ projects \ lab \ tes.php в строке 3.

Где все пошло не так? Очень нужна ваша помощь, ребята. Спасибо!

1
Zach 27 Ноя 2016 в 13:12

3 ответа

Лучший ответ

Ты можешь попробовать это

  $(document).ready(function(){
   $("#post").click(function(){
      var getContent = $("#text").html();
      $.ajax({
         url:"tes.php",
         type:"POST",
         data:{text:getContent},
         dataType:"html",
         success:function(data) {
          console.log(data)
         }
      });
   });
 });

И в HTML (как предложил Реза)

<button id="post">post 2</button>

Затем откройте консоль разработчика и посмотрите, видите ли вы ответ от tes.php

0
Christian 27 Ноя 2016 в 11:25

У вас есть событие click, которое пока отправляет запрос AJAX, все в порядке. У тебя есть

target="_blank"

Что обеспечивает открытие страницы в другой вкладке / окне. Насколько я понял, вы хотите отправить только запрос, поэтому вам нужно предотвратить default:

<!DOCTYPE html>
<html>
<head>
<title>Test</title>
<script type="text/javascript" src = "http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.8.0.min.js"></script>
<script type="text/javascript">
    $(document).ready(function(){
       $("#post").click(function(e){
          e.preventDefault();
          var getContent = $("#text").html();
          $.ajax({
             url:"tes.php",
             type:"POST",
             data:{text:getContent}
          });
       });
     });
</script>
</head>
<body>
    <p id="text" contenteditable="true">This is the content</p>
    <a href="tes.php" target="_blank"><button id="post">post 2</button></a>
</body>
</html>

Новая вкладка / окно выдаст вам ошибку, поскольку ожидаемого параметра нет, поэтому не открывайте его.

0
Lajos Arpad 27 Ноя 2016 в 10:45

Изменить HTML

<a href="tes.php" target="_blank"><button id="post2">post 2</button></a>

Кому

<button id="post">post 2</button>
0
reza 27 Ноя 2016 в 10:16