通过AJAX用PHP变量更新URL
Update URL with PHP Variable by AJAX
这可能是一个简单的解决方案,我自己也很困惑。我有一个<select>
,它通过MySQL用户数据库中的数组进行填充。没问题。我还有一个脚本,当选择某个用户时,我可以通过AJAX获得用户的user_id。我的问题是,将该用户ID获取到变量$assigned_to中,以包含在URL中
很抱歉编码太具体了。如果需要,我可以把它分解成一个更加简化的版本。到目前为止,我得到的是:
<script type="text/javascript">
function showData(str)
{
if (str=="")
{
document.getElementById("showData").innerHTML="";
return;
}
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("showData").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","getdata.php?assign_to="+str,true);
xmlhttp.send();
}
</script>
//
//This gets the user_id value from the `<select>` when a user selects it.
//
<?php
//
//Here is the function that displays my users:
//
function userlist()
{
echo "<select name='"assigned_to'" onChange='"showData(this.value)'">";
echo "<option default value='"'">Assignee</option>";
$mysqli = new mysqli("xxx", "xxx", "xxx", "xxx");
$userlist = "SELECT * FROM users where user_level = 2";
$result = $mysqli->query($userlist);
while( $row = $result->fetch_assoc() ) {
echo "<option value='"".$row['user_id']."'">".$row['first_name']." ".$row['last_name']."</option>";
}
echo "</select> ";
}
echo "<p>";
echo userlist();
echo "<a id='"show'" href='"index.php?page=overview&location=advance&assignee='"".$assign_to."'">Assign</a></p>";
?>
<!-- The line below **will** display the correct user_id value when selected -->
<div id="showData">User Id Shows Here</div>
最后一个URL变量$assign_to是我希望在选择返回时$row['user_id']中的值。
我知道实现这一切的理想方法是将一个表单发布到php页面,并使用_post检索所有这些变量。不幸的是,在这种情况下,我需要URL中的变量。
一如既往地感谢。
您在这里所做的应该已经完成了您希望它完成的操作。当选择框更改时,您的showData函数将使用选择框的当前选定值调用:
<select name='"assigned_to'" onChange='"showData(this.value)'">
在showData函数中,检索到的参数"str"包含此值,并将其附加到url:
xmlhttp.open("GET","getdata.php?assign_to="+str,true);
你应该在你喜欢的调试工具(firebug、chrome开发工具)的网络选项卡上看到它,或者你可以把它记录到控制台/提醒它
alert("getdata.php?assign_to="+str);
console.log("getdata.php?assign_to="+str);
你会看到它的工作
编辑:
用param重定向到当前页面可以这样做(即使我不明白你为什么要这样做…):
var current_url = document.location.href;
var separator = current_url.indexOf('?') === -1 ? '?' : '&';
document.location.href = current_url + separator + 'assign_to=' + str;
第2版:
将此函数添加到脚本中:
function setLinkAssignee(assignee) {
var i, newParams = [], link = document.getElementById('show'),
href = link.getAttribute('href')
linkArr = href.split('?')
params = (linkArr[1] || '').split('&');
for(i=0; i < params.length; i++) {
if(params[i].indexOf('assignee=') === -1) {
newParams.push(params[i]);
}
}
link.setAttribute('href', linkArr[0] + '?' + newParams.join('&') + '&assignee='+assignee);
}
如果你不想完成ajax请求,可以这样称呼它:
<select name='"assigned_to'" onChange='"setLinkAssignee(this.value)'">
或者像这样在你的展示数据:
function showData(str) {
// your stuff here
setLinkAssignee(str);
相关文章:
- 更新URL时使用Javascript函数显示日期
- 更新 url 而不重新加载,具体取决于使用 jquery/javascript 选择的复选框
- Angular/UI路由器-如何在不刷新所有内容的情况下更新URL
- 在不重新加载页面的情况下更新 URL 哈希
- 通过添加值1更新URL
- 修改req.url;t更新url参数(req.query)
- 猫头鹰轮播2 在拖动时更新 URL 哈希导航
- 在不触发状态更改的情况下更新 URL
- 我需要一些关于PHP的帮助,并在“?”之后更新URL
- 使用 JavaScript 更新 URL 不起作用
- 从 iFrame 内部更新 URL
- 动态更新 url/html 标题时,如何获得类似 facebook 的按钮来注册更改?(不是 fb:like 中的 hr
- 如何使用AngularJS中的下拉列表来更新URL以从中抓取图片
- 使用JS/RRails和下拉表单更新URL查询字符串
- 如何在不使用JavaScript刷新整个PHP页面的情况下更新url
- 如何在Angular文件上传模块中更新URL路径
- 使用jquery显示/隐藏功能更新url
- 在jquery中用两个下拉列表更新URL
- 如何在选择jQuery选项卡时正确更新URL哈希
- 更新url中的两个参数