jQuery.ajax似乎完全被绕过 - 没有控制台日志

时间:2014-09-30 14:31:48

标签: php jquery ajax session

我有一些jQuery / HTML,我接受一个用户输入(文本)项,并希望将其传递给PHP,以便以后在会话变量中使用。我已经查看了很多关于此类行为的网页,并且发现我认为我需要的最接近的答案是Set Session variable using javascript。以下代码基于此,但似乎ajax什么都不做。我已经完成了console.logs,并且在每条可能的路径中都通过ajax语句(完成,失败并且始终),但都没有出现。控制台日志显示:

  1. (文件)。就绪

  2. 从输入

  3. 获取新列表名称
  4. ListA1

  5. passName:ListA1

  6. 对象{listNamePOST:" ListA1"}

    1. passName function end

    2. 从passName()

    3. 返回
    4. 即将回复$ _SESSION [' listName']:

    5. 哪个错过了6.成功或6.失败和7.总是。行console.log(<?php echo $ _SESSION [' listName']?>);甚至没有显示空白行。

      我哪里出错了,拜托?

      这是test.php

      <?php    session_start();  ?>
      <form method="post" name="newlistform">
          <label for="list_name">Input:</label>
          <input style="position: relative; " name="list_name" type="text" required />
          <span class="button"  id="makeIt">Go</span>
      </form>
      <script src="http://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
      <script>
      /* ƒ: Pass listName out to SESSION variable */
          function passName ( listName ) {
      console.log('4. passName: ', listName);
              var params = {listNamePOST: listName};
      console.log("5. :");
      console.log(params);
              jQuery.ajax({
                  url: "storesession.php",
                  type: "POST",
                  data: params,
                  dataType : "json",
                  success: function(data, textStatus, xhr) {
      console.log("6. success");
      console.log(data); 
                  },
                  error: function(xhr, textStatus, errorThrown) {
      console.log("6. fail");
                  }
              });
      console.log('8. passName function end');
          }
      
          $(document).ready(function () {
      console.log('1. (document).ready');
      
          $( '#makeIt.button' ).click(function () {
      console.log('2. Take new list name from input');
              var listName = $( 'input[name=list_name]' ).val();
      console.log('3.', listName);
              passName ( listName );
      console.log('9. returned from passName()');
      console.log("10. about to echo $_SESSION['listName'] :");
      console.log(<?php echo $_SESSION['listName'] ?>);
      console.log('12. end');
          });
      })
      </script>
      

      这里是storesession.php

      <?php 
      $_SESSION['listName'] = $_POST['listNamePOST']; 
      ?>
      

      (我稍后会对用户输入进行清理。)

      修改:刚删除&#39; test.php&#39;在每个控制台日志行的末尾。我无意中复制了它们。

      第二次编辑:有关信息 - 此代码是一个较大的php文件的摘录,其中包含另一个$ .ajax调用,用于从MySQL数据库中获取一些数据,这是有效的。

      第3次修改:已完成修改:&#39;回到成功:&#39;,&#39;失败:&#39;回到&#39;错误:&#39;并永远删除&#39;。这个现在增加了6.成功作为最后一行,所以@FrancescoMM和@Kevin让我说得对,虽然我不明白为什么当我最初的时候它没有工作。

      As&#39; 6。成功&#39;出现在日志的末尾,我将尝试async:false并报告回: - 好的,它修复了序列问题,但日志语句10和12之间的控制台日志语句仍然没有出现。不,未定义&#39;甚至是一个空白行。

      所以问题现在减少为将listName转换为会话变量。

      第4次修改:现在已经解决了。当我将session_start语句从test.php移动到storesession.php并发现它没有工作时,我将其移回,但不是第一个语句。我发现http://www.yourhowto.net/how-to-check-and-create-php-session-variables/之后将语句移动到最开头,现在用户数据被传递到会话变量并在10到12之间的日志末尾正确显示。

2 个答案:

答案 0 :(得分:0)

如果它真的是你的完整storesession.php,那么你遗漏了session_start()

答案 1 :(得分:0)

您是否从AJAX调用返回json格式的数据?我有一个类似的问题,因为数据类型,丢失dataType : "json",除非你实际上返回json,看看是否有帮助。