访问 php 中的 JavaScript 变量值以存储在 mysql 中
Posted
技术标签:
【中文标题】访问 php 中的 JavaScript 变量值以存储在 mysql 中【英文标题】:Access JavaScript variables value in php to store in mysql 【发布时间】:2013-05-24 06:07:30 【问题描述】:很简单, 我正在尝试在使用 elrte 时访问 php 中的 javascript 中的变量, bleow 是我的 index.php 文件
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>One textarea with elRTE and file upload plus one text field with elFinder</title>
<!-- jQuery and jQuery UI -->
<script src="js/jquery-1.4.4.min.js" type="text/javascript" charset="utf-8"></script>
<script src="js/jquery-ui-1.8.7.custom.min.js" type="text/javascript" charset="utf- 8"></script>
<link rel="stylesheet" href="css/smoothness/jquery-ui-1.8.7.custom.css" type="text/css" media="screen" charset="utf-8">
<!-- elRTE -->
<script src="js/elrte.min.js" type="text/javascript" charset="utf-8"></script>
<link rel="stylesheet" href="css/elrte.min.css" type="text/css" media="screen" charset="utf-8">
<link rel="stylesheet" href="css/elrte.full.css" type="text/css" media="screen" charset="utf-8">
<!-- elFinder -->
<link rel="stylesheet" href="css/elfinder.css" type="text/css" media="screen" charset="utf-8" />
<script src="js/elfinder.full.js" type="text/javascript" charset="utf-8"></script>
<!-- elRTE and elFinder translation messages -->
<!--<script src="js/i18n/elrte.ru.js" type="text/javascript" charset="utf-8"></script>
<script src="js/i18n/elfinder.ru.js" type="text/javascript" charset="utf-8"></script>-->
<script type="text/javascript" charset="utf-8">
// elRTE with elFinder on a textarea
$().ready(function()
var opts =
cssClass : 'el-rte',
lang : 'en', // Set your language
allowSource : 1,
height : 450,
toolbar : 'maxi', // 'tiny', 'compact', 'normal', 'complete', 'maxi', or 'custom' (see advanced documentation for 'custom')
cssfiles : ['css/elrte-inner.css'],
fmAllow : 1,
fmOpen : function(callback)
$('<div id="myelfinder" />').elfinder(
url : 'connectors/php/connector.php',
places : '',
lang : 'en', // Set your language
dialog : width : 900, modal : true, title : 'Files' , // Open in dialog window
closeOnEditorCallback : true, // Close after file select
editorCallback : callback // Pass callback to file manager
)
$('#editor').elrte(opts);
// Text field with elFinder
var opt =
url : 'connectors/php/connector.php',
places : '',
lang : 'en',
editorCallback : function(url) document.getElementById('field').value=url;, // The id of the field we want elfinder to return a value to.
closeOnEditorCallback : true,
docked : false,
dialog : title : 'File Manager', height: 500 ,
$('#open').click(function() // The id of the button that opens elfinder
$('#finder').elfinder(opt) // The id of the div that elfinder will open in
$('#finder').elfinder($(this).attr('id')); // it also has to be entered here.
)
$('#btnsub').click(function()
var content = $('#editor').elrte('val');
);
)
)
</script>
</head>
<body>
<?php
$q=mysql_query("select * from aw_about_us")or die(mysql_error());
$r=mysql_fetch_array($q);
extract($r);
?>
<div id="finder"></div>
<table cellpadding="5" cellspacing="5" border="0" >
<form name="feedback" id="frm" method="post">
<tr>
<td>Title : </td>
<td><input type="text" id="atitle" size="75" value="<?=$abt_title?>"></td>
</tr>
<tr>
<td>Tag Line : </td>
<td><input type="text" id="atag" size="75" value="<?=$abt_small_line?>"></td>
</tr>
<tr>
<td colspan="2"><textarea id="editor" id="acontent" cols="50" rows="4">
<?=$abt_content?>
</textarea></td>
</tr>
<!--<input type="text" id="field" name="field" size="60"/> -->
<!--<input type="button" id="open" value="Browse..." /><br>-->
<tr>
<td><input type="submit" id="btnsub" value="Submit"></td>
</tr>
</form>
</table>
<?php
/*echo $_GET['val'];
if(isset($_POST['updabt']))
extract($_POST);
$q1=mysql_query("update aw_about_us set abt_title='$atitle', abt_small_line='$atag', abt_content=''") or die(mysql_error());
if($q1==true)
?><script>alert("Page Updated Successfully!!");</script><?php
else
?><script>alert("Page Not Updated!!");</script><?php
*/?>
</body>
</html>
我能够在 javascript 变量中获取 elrte 的值,但现在我想将此值存储在 mysql 数据库中,因为我正在使用 PHP 我想在 php 中访问此值以便我可以将它存储在数据库, 我尝试使用 window.open("abc.php?val="+content);但是值非常大,所以这里不能接受get方法,那么有没有办法在php中获取这个值?或任何其他方式来做到这一点?
** 编辑:**
现在它在进行以下更改后为我提供了一个内容变量的值,但我想要所有 3 个变量,但无法获取
$('#btnsub').click(function()
var content = $('#editor').elrte('val');
var title = document.getElementById('atitle').val;
var tag = document.getElementById('atag').val;
alert('title'+title);
$.ajax(
type: "POST",
url: 'abc.php',
data: title : title, tag : tag, content : content,
success: function(html) $('result').append(html); ,
dataType: 'html'
).done(function( msg )
alert( "Data Saved: " + msg );
);
和php文件
<?php
include('inc/conn.php');
if(isset($_POST['updabt']))
$cont=$_POST['updabt'];
$q1=mysql_query("update aw_about_us set abt_title='$title', abt_small_line='$tag', abt_content='$cont'") or die(mysql_error());
if($q1==true)
?><script>alert("Page Updated Successfully!!");</script><?php
else
?><script>alert("Page Not Updated!!");</script><?php
?>
现在如何获取所有三个变量??
【问题讨论】:
【参考方案1】:您需要使用 POST 请求向您的服务器提交值到您的 PHP 脚本。你可以用 Ajax 请求来做到这一点,我相信 jQuery 有内置的跨浏览器的 Ajax 方法。
【讨论】:
这不是一个非常有用的答案。使用“相信”这个词告诉我你不确定答案。是的,jQuery 有许多 AJAX 函数可以满足提问者的要求。但你还没有解释怎么做。 我确实解释了...我只是没有提供代码。谷歌搜索“Ajax POST request jQuery”会在第一页给出以下结果,并带有一个简洁易读的示例:***.com/questions/5004233/jquery-ajax-post-example 我提供的链接就是一个很好的例子。您还可以查看 jQuery 的 $.post() 函数。它简化了从 JavaScript 向 PHP 脚本提供数据的过程。 有一个名为“register_globals”的 PHP 配置设置。在开始执行脚本之前,它会自动从 $_POST 和 $_GET 数组创建“$varname”变量。但是,出于安全目的,它通常被禁用。更好的做法是使用 '$_POST['varname']' 或 '$_GET['varname']' 引用所有变量,这样您就不必依赖正在打开的功能。【参考方案2】:你需要 2 个页面,一个会发送 AJAX(你有这个),一个会响应(如下):
<?php
///ajax.php
if(isset($_POST['updabt']))
extract($_POST);
$q1=mysql_query("update aw_about_us set abt_title='$atitle', abt_small_line='$atag', abt_content=''") or die(mysql_error());
if($q1==true)
?><script>alert("Page Updated Successfully!!");</script><?php
else
?><script>alert("Page Not Updated!!");</script><?php
?>
在 javascript 中创建 AJAX 帖子
data['updabt'] = '';
$.ajax(
type: "POST",
url: 'ajax.php',
data: data,
success: function(html) $('result').append(html); ,
dataType: 'html'
);
【讨论】:
我不同意提问者需要两个“页面”。通过巧妙地使用参数,可以使用一个脚本来完成。您还发送了一个空字符串(我不知道目的是什么),success
操作没有任何目的。 ajax.php
没有 echo
任何东西。 ajax.php
中的 JavaScript 将不起作用,因为该脚本不在浏览器中处理,而是在后端处理的单独线程中。
@GordonFreeman 首先它需要工作,然后是优化。 OP 不够熟练,无法理解一页的所有“技巧”。
我添加了这个,$('#btnsub').click(function() var content = $('#editor').elrte('val'); var title = document.getElementById ('atitle').val; var tag = document.getElementById('atag').val; $.ajax( type: "POST", url: 'abc.php', data: data, success: success, dataType : 'html' ); ) 但还是不行...
如果调用自己的页面,无法显示结果(因为结果是全新的页面)或者需要在isset($_POST['updabt'])时禁止返回任何东西
如果我无法获得结果但数据也没有添加到数据库中也没关系【参考方案3】:
您可以使用 AJAX(最容易使用 jQuery 等库)将变量提交到另一个 PHP 脚本,该脚本将 INSERT
将值发送到您的数据库。
从阅读以下内容开始...
jQuery.ajax
jQuery.post
一旦您了解了 AJAX 的精妙之处,这实际上非常简单。
这里有一个简单的例子,让你开始跑步。假设您想在 PHP 错误日志中记录一些内容...
这将是我的 JavaScript 函数:
var log = function(val)
$.post("ajax.php", "mode": 'log', "val": val, function() );
ajax.php
将是函数的集合,理想情况下是一个类...
public function __construct()
$arrArgs = empty($_GET)?$_POST:$_GET;
/**
* using 'mode' I can send the AJAX request to the right method,
* and therefore have any number of calls using the same class
*/
if (array_key_exists('mode', $arrArgs))
$strMethod = $arrArgs['mode'];
unset($arrArgs['mode']);
$this->$strMethod($arrArgs);
protected function log($arrArgs)
error_log($arrArgs['val']);
同样的想法很容易适应将数据写入数据库。
【讨论】:
以上是关于访问 php 中的 JavaScript 变量值以存储在 mysql 中的主要内容,如果未能解决你的问题,请参考以下文章
缺少变量值时 Django 模板中的 Javascript 语法错误
在 Laravel 中使用刀片模板在 php 标签内打印 JavaScript 变量值