PHP没有收到JavaScript值

时间:2013-12-26 16:11:15

标签: javascript php jquery html ajax

我在编写程序时遇到问题。我的想法是单击一个链接,并在JavaScript变量中获取链接的值。然后我做一个GET请求将值发送到PHP变量并打印出来。

以下是代码:

HTML

<html>
    <head>
        <script src= "http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
    </head>
    <body>
        <div id='mydiv'>
            <a href='/codeigniter/index.php/hashtest/hi'>Link 1</a>
            <a href='/codeigniter/index.php/hashtest/hi'>Link 2</a>
        </div>
    </body>
</html>

jQuery (位于上方正文中的<script>标记内)

$(function()
{
    var mydiv = $('#mydiv');
    mydiv.on('click', 'a', function(){
        var text = $(this).text();
        console.log(text);
        //$.get("hashtest.php", {qwerty: text});
        $.ajax
        ({
            url: "/codeigniter/index.php/hashtest/hi",
            data: {
                qwerty : text
            },
            async: "false",
            success: function(data){
                console.log("success!");
            },
            error: function(jqXHR, status, error)
            {

                alert("Status : " + status + " error: " + error); 
            }   
        });
    });
});

PHP

class Hashtest extends CI_Controller {

    function __construct() {
        parent::__construct();
    }

    public function hi() {
        $x = $this->input->get('qwerty');
        print $x;
        print "";
    }

}

错误:

NS_ERROR_NOT_AVAILABLE: prompt aborted by user

目前,JavaScript正确获取正确的链接值,因为console.log()行为两个链接输出正确的内容。但似乎PHP没有收到这个值,因为没有打印出来。我试过用硬编码的字符串替换变量,但没有区别。我可以在上面的方法中打印静态PHP,所以我不认为这是一个我根本无法打印任何PHP的问题。

几点:

  • 我使用$ .ajax而不是$ .get只是为了看看会出现什么错误消息 出现(理想情况下我想使用$ .get)。这似乎是一些 基于我读过的有关上述内容的未被捕获的异常 错误消息以及出现的警报框没有的事实 显示错误消息,只是状态为“错误”。

  • 我不指望任何价值回归,成功方法就在那里 看看请求是否正在进行(目前不是)

  • 我假设链接的ID未知。

  • 代码都在同一个类和我指向的URL中 在AJAX请求中是正确的(我的HTTP中有一个HTTP 200代码 浏览器控制台)。

  • PHP是使用CodeIgniter框架编写的。

2 个答案:

答案 0 :(得分:3)

您需要阻止关注链接的默认操作:

$(function()
  {
      var mydiv = $('#mydiv');
      mydiv.on('click', 'a', function(e){
          e.preventDefault(); // <-- THIS IS NEEDED
          var text = $(this).text();
          console.log(text);
          //$.get("hashtest.php", {qwerty: text});
          $.ajax
          ({
              url: "/codeigniter/index.php/hashtest/hi",
              data: {qwerty : text},
              async: "false",
              success: function(data){
                  console.log("success!");
              },
              error: function(jqXHR, status, error)
              {

                  alert("Status : " + status + " error: " + error); 
              } 
          });
      });
  });

答案 1 :(得分:0)

您的代码是正确的,但是当您点击链接时不会停止活动。

添加e.preventDefault();

var mydiv = $('#mydiv');

            mydiv.on('click', 'a', function(e){
                      e.preventDefault();
                      var text = $(this).text();

      </code>