下拉菜单更改 jquery 函数和 sql 查询

发布于 2025-01-05 20:45:08 字数 1399 浏览 1 评论 0原文

我正在尝试让 sql 查询在下拉菜单选择上运行。这是我到目前为止所拥有的:

<script>
$('#templateid').change(function(DoUpdateOnSelect) {
$.post('page.edit.php?page_id=(-->Need help in getting this id from the page url<--)&template='+this.options[this.selectedIndex].value);
});
</script>

下拉列表:

<select name="templateid" id="templateid" onchange="DoUpdateOnSelect">
    <option >Contact</option>
    <option >News</option>
    <option >Home</option>
</select>

page.edit.php 有条件,如果它检测到 URL 中的页面 id 和模板,它将运行 sql 查询。模板参数值是用 jquery 从选择下拉菜单中获取的(如果该部分在 jquery 中设置错误,请告诉我)。我不知道如何从页面的当前网址中获取 page_id 参数,并将其插入到函数中,以便 page.edit.php?page_id=1&template=Home 将是正确输出的网址。

如果您需要更多信息,请告诉我。提前致谢。

编辑:基于下面的答案:

function querystring(name)
{
name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
var regexS = "[\\?&]"+name+"=([^&#]*)";
var regex = new RegExp( regexS );
var results = regex.exec( window.location.href );
if( results == null )
  return "";
else
  return results[1];
}
$('#templateid').change(function() {
   var page_id = querystring('page_id');
   var url = '?VIEW=EDITPAGE&linklabel='+page_id+'&template='+(this.options[this.selectedIndex].value);
$.post(url);
});

当我在下拉菜单中进行选择时没有发生任何变化

I am trying to get a sql query to run on drop down menu selection. Here is what I have so far:

<script>
$('#templateid').change(function(DoUpdateOnSelect) {
$.post('page.edit.php?page_id=(-->Need help in getting this id from the page url<--)&template='+this.options[this.selectedIndex].value);
});
</script>

And the drop down:

<select name="templateid" id="templateid" onchange="DoUpdateOnSelect">
    <option >Contact</option>
    <option >News</option>
    <option >Home</option>
</select>

page.edit.php has conditions on it which will run the sql query if it detects the page id and the template in the URL. The template parameter value is grabbed with the jquery (please let me know if that part is set up wrong in the jquery) from the select drop down menu. What I can't figure out is how to grab the page_id parameter from the current url of the page, and insert that into the function so that the page.edit.php?page_id=1&template=Home will be the correctly outputted URL.

Please let me know if you need further information. Thanks in advance.

EDIT: BASED ON ANSWER BELOW:

function querystring(name)
{
name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
var regexS = "[\\?&]"+name+"=([^&#]*)";
var regex = new RegExp( regexS );
var results = regex.exec( window.location.href );
if( results == null )
  return "";
else
  return results[1];
}
$('#templateid').change(function() {
   var page_id = querystring('page_id');
   var url = '?VIEW=EDITPAGE&linklabel='+page_id+'&template='+(this.options[this.selectedIndex].value);
$.post(url);
});

NO CHANGE IS HAPPENING WHEN I MAKE A SELECTION IN THE DROP DOWN MENU

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

混吃等死 2025-01-12 20:45:08

要从 url 获取 page_id,您应该使用像这样的函数

function querystring( name )
{
  name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
  var regexS = "[\\?&]"+name+"=([^&#]*)";
  var regex = new RegExp( regexS );
  var results = regex.exec( window.location.href );
  if( results == null )
    return "";
  else
    return results[1];
}

,然后您可以使用这样的函数检索它

var page_id = querystring('page_id');

,您的 onchange 处理程序将类似于:

$('#templateid').change(function() {
   page_id = querystring('page_id');
   var url = 'page.edit.php?page_id='+page_id+'&template='+this.options[this.selectedIndex].value);
   $.post(url, function(response){
      //your logic here
   });
});

哦,请从选择标记中删除 onchange 属性:

<select name="templateid" id="templateid">
    <option >Contact</option>
    <option >News</option>
    <option >Home</option>
</select>

for getting the page_id from the url you should use a function like

function querystring( name )
{
  name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
  var regexS = "[\\?&]"+name+"=([^&#]*)";
  var regex = new RegExp( regexS );
  var results = regex.exec( window.location.href );
  if( results == null )
    return "";
  else
    return results[1];
}

then you could retrieve it with

var page_id = querystring('page_id');

so, your onchange handler would look something like:

$('#templateid').change(function() {
   page_id = querystring('page_id');
   var url = 'page.edit.php?page_id='+page_id+'&template='+this.options[this.selectedIndex].value);
   $.post(url, function(response){
      //your logic here
   });
});

oh, and please remove the onchange attribute from the select markup:

<select name="templateid" id="templateid">
    <option >Contact</option>
    <option >News</option>
    <option >Home</option>
</select>
那请放手 2025-01-12 20:45:08

尝试使用这个插件
<代码>

$.extend({
  getUrlVars: function(){
    var vars = [], hash;
    var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
    for(var i = 0; i < hashes.length; i++)
    {
      hash = hashes[i].split('=');
      vars.push(hash[0]);
      vars[hash[0]] = hash[1];
    }
    return vars;
  },
  getUrlVar: function(name){
    return $.getUrlVars()[name];
  }
});

<代码>

Try using this plugin

$.extend({
  getUrlVars: function(){
    var vars = [], hash;
    var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
    for(var i = 0; i < hashes.length; i++)
    {
      hash = hashes[i].split('=');
      vars.push(hash[0]);
      vars[hash[0]] = hash[1];
    }
    return vars;
  },
  getUrlVar: function(name){
    return $.getUrlVars()[name];
  }
});

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文