如何将javascript变量传递给数据库

时间:2012-11-12 02:55:56

标签: php javascript mysql ajax

我在javascript中有一个应用程序。我按照一些教程来做,但我真的没有javascript代码的经验。问题是我需要将变量结果从javascript传递给mysql数据库。我在这个网站上找到了一些答案,我试着做我发现没有运气的东西。我发现我需要ajax和php。我从不使用ajax,因为我不明白我做错了什么。

也许如果我把代码放在这里,有人可以帮我解决问题。

这是javascript代码:

   

    function ajaxFunction(){
    var ajaxRequest;  

    try{
        Opera 8.0+, Firefox, Safari
        ajaxRequest = new XMLHttpRequest();
    } catch (e){
        Internet Explorer Browsers
        try{
            ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
        } catch (e) {
            try{
                ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
            } catch (e){
                Something went wrong
                alert("Your browser broke!");
                return false;
            }
        }
    }

    ajaxRequest.onreadystatechange = function(){
        if(ajaxRequest.readyState == 4){
            document.myForm.time.value = ajaxRequest.responseText;
        }
    }

      ds = new Date();
      e_time = ds.getTime();


      var res = new Object();//This are the results variables that i need to pass to my database
      res.bytes_transfered =;         
      res.total_time_seconds = (e_time-s_time)/1000;
      res.generatied_in = ;
      res.ip = "";
     -->
     var res1= 'res.bytes_transfered';
     var res2= 'res.total_time_seconds';
     var res3= 'res.generatied_in';
     var res4= 'res.ip';

     $.post('insert.php',{res.bytes_transfered:res1,res.total_time_seconds: res2, res.generatied_in: res3, res.ip:res4});

    var queryString = "?res.bytes_transfered=" + res.bytes_transfered + "&res.total_time_seconds=" + res.total_time_seconds + "&res.generatied_in =" + res.generatied_in + "&res.ip  =" + res.ip;
    ajaxRequest.open("POST", "insert.php" + queryString, true);
    ajaxRequest.send(null); 
     new Ajax.Request('insert.php', {

    onSuccess : function(xmlHTTP) {

        eval(mlHTTP.responseText);
    }

});
     

这是insert.php:


        $fecha= date("Y-m-d H:i:s");
        $connnect= mysql_connect("localhost", "root", "xxxxxxxxx");
        mysql_select_db("dbname");

        $res1= mysql_real_escape_string($_POST['res1']);
    $res2= mysql_real_escape_string($_POST['res2']);
    $res3= mysql_real_escape_string($_POST['res3']);
    $res4= mysql_real_escape_string($_POST['res4']);

                    $queryreg=mysql_query("INSERT INTO grafico(Cantidad, Tiempo, IP, Bajada, Subida, Fecha) VALUES ('$res1','$res2','$res3','$res4','0','$fecha') ");
                if (!$queryreg) {
                die('No se ha podido ingresar su registro.');
                    }
                    else{

                        die("Usted se ha registrado exitosamente!");
                    }


我希望有人可以帮助我。我不知道该怎么做!

3 个答案:

答案 0 :(得分:0)

看起来您的POST数据具有向后键和值。在传递给$ .post的数据中,键名需要先出现,然后是:。所以我认为它应该是:

$.post('insert.php',{res1:res.bytes_transfered,res2:res.total_time_seconds,res3:res.generatied_in, res4: res.ip});

答案 1 :(得分:0)

你需要做的是让JavaScript将你的变量传递给PHP,然后PHP会在你的MySQL语句中使用它(很可能是通过PHP中的PDO)。

现在,AJAX是什么?好吧,它是一种现代方式,可以帮助您将数据从JavaScript发送到PHP,并获得从PHP到JavaScript的响应,而无需刷新或重新加载页面。

总而言之,JavaScript进行了一次AJAX调用,该调用将向PHP发送数据,这将对MySQL做一些事情,然后用你的结果回复JavaScript。

答案 2 :(得分:0)

您需要注释掉几行,以便它不会被解释为代码

//Opera 8.0+, Firefox, Safari

您的Ajax代码仅创建ajax对象并设置事件侦听器,它实际上从未发出请求,因此它当然无法工作。请求看起来像这样

ajaxRequest.open("post", "/myphppage.php", true);
...
ajaxRequest.send("somevariable=" + variable);