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

Posted

技术标签:

【中文标题】如何将javascript变量传递给数据库【英文标题】:How to pass javascript variables to a database 【发布时间】:2012-10-31 12:40:24 【问题描述】:

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

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

这是javascript代码:

函数 ajaxFunction() var ajaxRequest; 尝试 Opera 8.0+、火狐、Safari ajaxRequest = new XMLHttpRequest(); 抓住(e) Internet Explorer 浏览器 尝试 ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP"); 抓住 (e) 尝试 ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP"); 抓住(e) 有些不对劲 alert("你的浏览器坏了!"); 返回假; ajaxRequest.onreadystatechange = function() 如果(ajaxRequest.readyState == 4) document.myForm.time.value = ajaxRequest.responseText; ds = 新日期(); e_time = ds.getTime(); var res = new Object();//这是我需要传递给我的数据库的结果变量 res.bytes_transfered =; res.total_time_seconds = (e_time-s_time)/1000; res.generatored_in = ; res.ip = ""; --> var res1='res.bytes_transfered'; var res2='res.total_time_seconds'; var res3='res.generatored_in'; var res4='res.ip'; $.post('insert.php',res.bytes_transfered:res1,res.total_time_seconds: res2, res.generated_in: res3, res.ip:res4); var queryString = "?res.bytes_transfered=" + res.bytes_transfered + "&res.total_time_seconds=" + res.total_time_seconds + "&res.genratied_in =" + res.generated_in + "&res.ip =" + res.ip; ajaxRequest.open("POST", "insert.php" + queryString, true); ajaxRequest.send(null); 新的 Ajax.Request('insert.php', onSuccess:函数(xmlHTTP) 评估(mlHTTP.responseText); );

这是insert.php:

$fecha= date("Y-m-d H:i:s"); $connect= 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')"); 如果 (!$queryreg) die('没有 se ha podido ingresar su registro.'); 别的 die("Usted se ha registrado exitosamente!");

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

【问题讨论】:

您的代码中实际上并没有那些未注释的文本,是吗? 你在使用 jQuery 吗?您没有列出标签,但您在示例中使用了 jQuery 代码。 【参考方案1】:

看起来您的 POST 数据的键和值是倒序的。在传递给 $.post 的数据中,键名需要在前,值在 : 之后。所以我认为应该是:

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

【讨论】:

用户没有给我们任何暗示他正在使用jQuery,那么你为什么要给他一个jQuery代码的sn-p而不做进一步的解释? 也许是他使用 $.post 的那一行,我只是复制粘贴然后更正了。 抱歉,我没有注意到代码块是可滚动的。因此,为什么我的回答也不是很有用。【参考方案2】:

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

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

因此,总而言之,JavaScript 会进行 AJAX 调用,该调用会将数据发送到 PHP,PHP 将使用 MySQL 执行某些操作,然后用您的结果响应 JavaScript。

【讨论】:

【参考方案3】:

你需要注释掉几行,这样它就不会被解释为代码

//Opera 8.0+, Firefox, Safari

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

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

【讨论】:

以上是关于如何将javascript变量传递给数据库的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 EJS 模板引擎将变量传递给内联 javascript?

如何将值从javascript变量传递给剃刀变量?

如何将 Django 变量传递给 Javascript

如何将变量(laravel)传递给javascript?

如何从 Blade 格式 HTML 将 PHP 变量传递给 JavaScript 函数

如何将javascript变量传递给django模板标签