2015-08-03 2 views
0

У меня есть html-страница с формой, в которой я хотел бы отправить значение и отправить его, используя javascript (w/jquery & ajax), на страницу php, где происходит определенный процесс, который я бы хотел отслеживать на странице html, отправив обратно переменную несколько раз на исходную страницу html, возможно, в пустой div (id = txtHint). Ниже то, что я до сих пор ...Передача переменной javascript в php, а затем обратно в html

Me.html

<html> 
<head> 
    <title>Generator</title> 
    <script src="jquery-1.9.1.min.js" type="text/javascript"></script> 
    <script src="howdy.js" type="text/javascript"></script> 
</head> 

<body> 
    <div id="form_container"> 
     <h1>Generator</h1> 
     <form id="myForm" name="myForm"> 
      <input id="myStr" type="text"> 
      <input id="regrForm" type="button" name="submit" value="Submit"> 
      </center> 
     </form> 
    </div> 
    <div id="txtHint"></div> 
</body> 
</html> 

howdy.js

$(document).ready(function() { 

    $("#regrForm").click(function(){ 

     var myText = $("#myStr").val(); 

     $.ajax({ 
      url: 'tracker.php', 
      type: 'POST', 
      data: { 
       newStr: myText}, 
      dataType: "text", 
      success: function(data){ 
       console.log("It went through!"); 
       $('#txtHint').html(data); 
      } 
     }); 
    }); 
}); 

tracker.php

<?php 
    $myName = $_POST['newStr']; 
    echo "<p> My string is: " . $myName . "</p>"; 

    for ($i=0; $i<1000000; $i++){ 

     //analyze stuff 

     if ($i % 100000 === 0){ 
      echo "Total number of things analyzed: " . $i . " from " . $myName; 
     } 
    } 
?> 

Проблема в том, что я не совсем уверен, что мои переменные передаются соответствующим образом из javascript в php, а также как точно передать обновления php (итерация, через которую я подключаюсь через $ i) обратно на страницу html ... любой мысли? Если я не предоставил достаточную информацию, пожалуйста, дайте мне знать. Я ценю любую конструктивную помощь, которую вы можете предложить.

+0

Похоже, вы хотите передать несколько HTTP-ответов для одного запроса POST, это то, что вы пытаетесь сделать? Вообще говоря, такая модель гораздо сложнее реализовать, чем один ответ. Я лично не специалист по PHP, но я подозреваю, что код, который у вас есть, не будет делать то, что вы хотите, как написано. Может быть, что-то вроде этого может помочь? https://github.com/pusher/pusher-http-php Также (несколько несвязанный), следует ли указывать howdy.js в вашем HTML? просто хочу убедиться, что мы смотрим на правильные вещи. – killthrush

+0

Да. Это именно то, что я пытаюсь сделать. Я редактировал имя файла js, указанное в html-документе. Виноват. – ADT

ответ

2

Для целей развития с помощью AJAX.

  1. console.log (data) из метода ajax-> success(), чтобы вы могли видеть ответ от PHP.
  2. Если вы хотите увидеть, как он отправляется просто var_dump ($ _ POST);
  3. Просмотрите файл журнала ошибок веб-сервера, если вы используете APACHE/Linux, он будет в вашем/var/log/httpd/error_log запускать этот cmd в Linux, чтобы вы не могли просматривать ошибки ---- tail -f/var/log/httpd/error_log

Глядя на ваш PHP-код, похоже, что вы собираетесь разбивать браузер на запуск цикла за миллион раз ... а затем каждые 10 тысяч раз печатаете «Всего количество проанализированных вещей ... "

Что конкретно вы пытаетесь достичь?

+0

Кажется, что OP пытается получить один POST для множественных обратных вызовов (т. Е. Ответов HTTP). Такая вещь, которая потребует сокетов или длинных опросов, чтобы вы могли видеть промежуточные шаги в каком-то длительном процессе. – killthrush

+0

@killthrush да Я согласен с тем, что он пытается выполнить, он должен использовать соединение сокета или длительный опрос, как вы упомянули. –

+0

Я определенно искал несколько обратных вызовов, если это возможно. Так как же я буду делать это? Вы упомянули сокеты или длинный опрос? Какие хорошие примеры вы могли бы мне указать? – ADT

-1

несколько вещей, чтобы отметить:

  • У вас есть </center>, которые не должны быть там в HTML

  • Я не уверен dataType: "text", попробуйте удалить что

  • Для см. данные php в html

    вместо

    console.log("It went through!"); 
    

    сделать это

    $('#txtHint').html(data); 
    
1

Ваша переменная передается от javascript к php. Просто обновление функции успеха, чтобы стать как этот

success: function(data) 
{ 
    $('#txtHint').html(data); 

    console.log("It went through!"); 
} 

Результаты будут напечатаны в узле «#txtHint».

+0

Спасибо за помощь. Тем не менее, я пытаюсь заставить динамик «txtHint» динамически заменяться эхом из файла tracker.php, так что я увижу обновление на моей странице html, поскольку я просматриваю все, что я анализирую в этом цикле , Например, я хочу видеть постоянно обновляемое сообщение, которое говорит мне: «Общее количество проанализированных вещей: 200000 из [текст, введенный в текстовое поле]». Если я обновляю свой код, как вы указали, я увижу несколько сообщений, которые будут объединены вместе, а затем напечатаны в div #txtHint после того, как все будет готово. Любые предложения о том, как получить динамическое обновление? – ADT

+0

Поскольку вы имеете дело с запросом HTTP в своем примере, он не достигнет того, чего вы хотите, потому что ответ не вернется, пока страница не завершит обработку. Вы не можете получить несколько ответов для одного запроса. Вы можете применять несколько запросов; по одному для каждого цикла (** НЕ РЕКОМЕНДУЕТСЯ **). Чтобы получать обновления в реальном времени, я предлагаю вам использовать [socket.io] (http://socket.io). –