使用Ajax获取javascript变量的值?

使用Ajax获取javascript变量的值?,javascript,php,jquery,ajax,Javascript,Php,Jquery,Ajax,长期stackoverflow用户,但第一次海报!我最近制作了一个非常简单的基于浏览器的小游戏,当我说“简单”时,我再强调也不为过 无论如何,整个游戏逻辑都在一个小javascript文件中。在该文件中,我有一个名为value的变量,它包含玩家的分数 在游戏过程中,用户可以在任何给定的时间单击提交,然后使用php脚本访问并写入他们的用户名,希望很快将他们的分数写入我的数据库 我遇到的问题是,我知道很多Ajax新手遇到的问题是,如何将javascript变量值的值发送到处理将变量发送到数据库的ph

长期stackoverflow用户,但第一次海报!我最近制作了一个非常简单的基于浏览器的小游戏,当我说“简单”时,我再强调也不为过

无论如何,整个游戏逻辑都在一个小javascript文件中。在该文件中,我有一个名为value的变量,它包含玩家的分数

在游戏过程中,用户可以在任何给定的时间单击提交,然后使用php脚本访问并写入他们的用户名,希望很快将他们的分数写入我的数据库

我遇到的问题是,我知道很多Ajax新手遇到的问题是,如何将javascript变量值的值发送到处理将变量发送到数据库的php页面

我已经读了很多关于这方面的书,但似乎无法让它发挥作用。因此,从头开始,假设我有一个功能正常的javascript文件,其值变量包含分数。如何使用ajax将分数发送到php文件?我将把Ajax代码放在哪里

谢谢你!另外,我已经知道javascript驻留在客户端,php运行在服务器端,我只想知道如何正确地将分数发送到php文件,仅此而已!再次感谢你

编辑:因为我似乎被否决了,这就是我所拥有的,但它不起作用:

我的Ajax:

function ajaxCall() {alert("To AJAX: the value is: " + value);

    $.ajax
    (   {
            type: "POST",
            url: "handler.php",
            data: {'value' : value}, 
            success: function(response)
            { alert("The value was passed!")}
        }
    );};
ajaxCall()

handler.php的一部分:

if(isset($_POST['value']))

{
$value = $_POST['value']."";
var_dump($value);
}

var_dump($_POST['value']);
用这个,

您的ajax.js应该包含这个

$(document).ready(function() {
   $("#submitscore").click(function(event){
     var user = $('#username').val();
     var value = document.getElementById('yourscore').innerHTML;
      $.post( 
         "submitscore.php",
         { username: user, score: value }
           );
  });
});
您的另一个文件应该有一个id为“SubmitCore”的按钮


定义一个设置变量的函数。请确保提前定义变量,以便可以在函数外部访问它

function ajaxCall() {
    alert("To AJAX: the value is: " + value);
    var response_value; // define here or you won't be able to access it outside of success: f()
    $.ajax({
        type: "POST",
        url: "handler.php",
        data: {'value' : value}, 
        success: function(response) {
            response_value = response;
            }
        }
    );
}
另外,请不要在
function(){}
之后使用分号。升华文本可以做到这一点,但语法仍然不正确

编辑:我建议您将PHP文件更改为直接输出JSON文件。 这样做时要考虑的事项:

  • 使用
    标题设置内容类型('content-type:application/json;charset=utf-8')
  • 生成PHP数组或单个变量(例如,
    $result\u数组
  • 使用PHP将其编码为utf-8 JSON:
    $JSON\u string=JSON\u Encode($result\u数组)$json_字符串=utf8_编码($json_字符串)
  • 然后简单地
    echo($json_字符串)
  • 告诉jQuery您正在使用JSON:Add
    dataType:JSON
    到$.ajax()配置中

也许这有帮助:谢谢你,我会查一查的!非常感谢。您的代码中到底有什么“不起作用”?您的Ajax调用看起来不错。您的PHP脚本可能有问题。添加
错误处理程序
或检查浏览器开发工具的“网络”选项卡,查看PHP是否抛出任何错误。既然您似乎在使用jQuery,那么也来看看。@Felix,转储文件只显示NULL。Firebug可以用来调试这个吗?那么你是说只需要游戏中提到的第二行。js?我把你的按钮代码改为:提交分数,但它仍然说你不需要把它放在表单中。只需使用按钮,并确保在HTML页面中包含ajax.js和jquery.min.js。是的,主HTML页面的标题是这样的:在脚本选项卡中没有
language=”“
(根据w3Schools-google脚本属性)属性,请将其删除。另外,jQuery.js拥有哪个版本的jQuery。我建议您使用jQuery网站上的原始jQuery
,我将尝试所有这些回答!是的,我刚从记事本++切换到升华,不知道我的感受如何。如果你对升华文本不熟悉,请在你有空的时候查看这个,我按照你提到的那样做了,我仍然只能让它显示为空。JavaScript本身不会将变量设置为
NULL
,而是将其设置为
undefined
。请检查您的PHP文件是否回答为
null
Tobias!尽管我建议在使用json_编码之前对数据使用utf8_编码。json_encode仅适用于UTF8字符串,如果找到非UTF8字符,则可能返回null。
if(isset($_REQUEST['score'])||isset($_REQUEST['username']))
{
$username = $_REQUEST['username'];
$value = $_REQUEST['score'];
var_dump($value);
//Your Insertion/Updation Databse Script
}
function ajaxCall() {
    alert("To AJAX: the value is: " + value);
    var response_value; // define here or you won't be able to access it outside of success: f()
    $.ajax({
        type: "POST",
        url: "handler.php",
        data: {'value' : value}, 
        success: function(response) {
            response_value = response;
            }
        }
    );
}