使用AJAX将JavaScript变量传递到PHP

5

我有一个 javascript 变量,想要把它传递给我的 php 文件。我搜索了一下,发现需要使用 ajax,但我不太确定如何使用!这是我的代码。 请问哪里出错了? 我的 .js 文件:

var message1 = message.message;

        var jq = document.createElement('script');
        jq.src = "https://code.jquery.com/jquery-1.10.2.js";
        document.querySelector('head').appendChild(jq);

            $(document).ready(function() {
               $.ajax({
                        type: "POST",
                        url: 'http://localhost/a.php',
                        data: { newMessages : message1 },
                        success: function(data)
                        {
                            alert("success!");
                        }
                    });
         });

我的a.php文件:

<?php
  if(isset($_POST['newMessages']))
  {
      $uid = $_POST['newMessages'];
      echo $uid;
  }
?>

我怎么知道它是否已经触发? - Ali Motiee
2
在加载jQuery时异步加载有特定的原因吗?开发过程中始终保持控制台打开。 - Rayon
使用console.log()或alert来查看newMessages和message1中的内容,不要看到newMessages被定义了... - Andrew
根据你所说,你展示的代码中JS部分包含在一个名为my.js的文件中。但是1)<script src=".../my.js"></script>元素位于哪里?2)在var message1 = ...之前必须有其他JS代码:你能展示一下吗? - cFreed
POST http://localhost/a.php 200 OK jquery.min.js(第4行) - Ali Motiee
2个回答

1
监听异步加载脚本的onload事件,并在回调函数中执行您的函数。[参考]

尝试这样做:

function loadScript(src, callback) {
  var s,
    r,
    t;
  r = false;
  s = document.createElement('script');
  s.type = 'text/javascript';
  s.src = src;
  s.onload = s.onreadystatechange = function() {
    if (!r && (!this.readyState || this.readyState == 'complete')) {
      r = true;
      callback();
    }
  };
  t = document.getElementsByTagName('script')[0];
  t.parentNode.insertBefore(s, t);
}

var message1 = "My message";
loadScript('https://code.jquery.com/jquery-1.10.2.js', function() {

  $(document).ready(function() {
    $.ajax({
      type: "POST",
      url: 'http://localhost/a.php',
      data: {
        newMessages: message1
      },
      success: function(data) {
        alert("success!");
      }
    });
  });
})

语法错误:在严格模式代码中,函数只能在顶层声明或者立即在另一个函数内部声明。 - Ali Motiee
这是我的控制台结果。 - Ali Motiee
我在代码顶部有一个函数。我认为我不能使用另一个函数。 - Ali Motiee
你不能不使用另一个函数。分享你的代码片段以供审查。 - Rayon
我该如何运行你的本地主机文件? - Rayon

-1

这个 PHP 文件应该以 JSON 格式返回数据。您可以在 Ajax 中添加 complete、always 和 error 来更好地捕获结果。


为什么应该这样做呢?JavaScript 没有指定 dataType: "json" - Quentin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接