【问题标题】:Passing parameters from JS/Jquery on one page to PHP on another将参数从一个页面上的 JS/Jquery 传递到另一个页面上的 PHP
【发布时间】:2011-11-19 23:10:00
【问题描述】:

我正在寻找使用 POST 方法将参数从一个页面上的 javascript/jquery 传递到另一页面上的 PHP 的最简单方法。

我应该提一下,这两个页面都是 wordpress 页面的 PHP 模板,但我想应该没关系。

希望双方的代码示例。

【问题讨论】:

  • 嗯,我知道如何使用 ajax 在 php 页面上运行代码,但我不知道如何打开 php 页面并传递参数。能举个例子吗?
  • 听起来像是在找ajax教程。看看我的回答stackoverflow.com/questions/7199797/some-ajax-help/…
  • 好的,我想我明白了。现在,如果我不想从 PHP 页面获得答案,但我想打开并停留在上面怎么办?我希望你写一个答案而不是评论,这样我就可以给你应得的荣誉。
  • :如果您认为我对您有所帮助。请支持该答案stackoverflow.com/questions/7199797/some-ajax-help/… 所以不希望放置重复的答案。感谢您的赞赏
  • 很乐意。你能回答我之前评论中的问题吗?

标签: php javascript jquery wordpress parameter-passing


【解决方案1】:
$.ajax({
  type: 'POST',
  url: 'otherpage.php',
  data: $('form').serialize(), //you may want to give id of the form which contains elements you want to POST
  success: function(){
      //code on success
  },
  dataType: 'html'
});

编辑 1 如果你想指定你自己的参数发送然后使用:

$.ajax({
  type: 'POST',
  url: 'otherpage.php',
  data: {
          paramname1 : "put_param_value_here",
          paramname2 : "put_param_value_here",
          paramname3 : "put_param_value_here"
        },
  success: function(){
      //code on success
  },
  dataType: 'html'
});

编辑 2:如果您只想将自己的参数发布到页面(没有 ajax。简单的 POST 将打开页面然后执行以下操作)

function postToUrl(url, params, newWindow)
{
    var form = $('<form>');
    form.attr('action', url);
    form.attr('method', 'POST');
    if(newWindow){ form.attr('target', '_blank'); }

    var addParam = function(paramName, paramValue){
        var input = $('<input type="hidden">');
        input.attr({ 'id':     paramName,
                     'name':   paramName,
                     'value':  paramValue });
        form.append(input);
    };

    // Params is an Array.
    if(params instanceof Array){
        for(var i=0; i<params.length; i++){
            addParam(i, params[i]);
        }
    }

    // Params is an Associative array or Object.
    if(params instanceof Object){
        for(var key in params){
            addParam(key, params[key]);
        }
    }

    // Submit the form, then remove it from the page
    form.appendTo(document.body);
    form.submit();
}

这样调用:-

postToUrl('otherpage.php', {paramname1: "value_here", paramname2: "value_here"});

代码取自JavaScript post request like a form submit的回答

【讨论】:

  • 这会导致 otherpage.php 显示?另外,我不明白你在数据线上的注释。我想将参数从当前页面传递到我正在调用的页面并显示它。
  • 我以为您正在寻找一种 ajax 方式来打开其他页面。无论如何,在您的情况下,您只需要确保您的
    看起来像这样:-
    ... ...
    。简单的 html 做事方式!
  • 您理解正确。我正在寻找一种 ajax 方式来打开该其他页面,但我也想传递它的参数。 form 选项不是很好,因为我有几个按钮,每个按钮都会打开相同的页面,但参数不同。
  • 再次更新..postToUrl 会将您的自定义参数发布到新页面..由于这不是 ajax..您的 otherpage.php 应该在浏览器中打开
  • JamesSmith,非常感谢您的详细回复。你明白我在找什么,我敢打赌它会起作用,所以我接受你的回答。但这对我来说太复杂了,我现在意识到我的策略是错误的,我应该用 PHP 而不是 JS 做更多的工作,那么我就不会遇到这种情况。所以我将通过将参数写入数据库来解决这个问题,重定向到页面并再次读取它们。我知道这是糟糕的编程,但这只是暂时的。现在我只需要尽快完成我的网站建设。
【解决方案2】:

您可以使用查询字符串参数

$.post("anotherPage.php?param1=one&param2=two",function(data){ 
console.log("data"); //prints yahoo
console.log("success");    
});

$.post("anotherPage.php",{param1:'one',param2:'two'},function(data){ 
console.log("data"); //prints yahoo
console.log("success");    
});

在php页面中

$param1=$_POST['param1'];//gives you one
$param2=$_POST['param1'];//gives you two

echo "yahoo";

编辑

从评论中没有 JamesSmith 的回答我认为你想在这种情况下重定向到其他页面

Page1.php

<script>
location.href='page2.php?param1=one&param2=two'; // this causes the page to redirect
</script>

page2.php

<h1><?php echo $_GET['param1']; ?></h1>
<h2><?php echo $_GET['param2']; ?></h2>

又一次修改

您可以在 page1 中创建一个表单并将其发布到 page2

<form action="page2.php" method="post">
<input name="param1" type="text" />
<input name="param2" type="text" />
<input name="submit" value="Submit" type="submit" />
</form>

在page2.php中

<h1><?php echo $_POST['param1']; ?></h1>
<h2><?php echo $_POST['param2']; ?></h2>

【讨论】:

  • console.log 是做什么的?你是什​​么意思“打印雅虎”? “雅虎”从何而来?
  • 谢谢,但我想使用 POST,而不是 GET。那么,您的原始答案不会重定向到新页面?
  • 不,在您的场景中,原始答案也不会重定向到 page2,据我了解,您不能使用 POST,因为查询字符串参数在地址栏中可见,因此您必须使用GET.
  • 有没有办法让参数在地址栏中不可见?这就是为什么我想尽可能使用 POST 而不是 GET。
【解决方案3】:

你可以根据响应在ajax成功中做你想做的事情

$.post('server.php', ({parm:"1"}) function(data) {
    if (data == 1){
        window.href = "your redirecting location";
    }
    else
    {
        //do something
    }
});

【讨论】:

  • 在我的情况下 server.phpwindow.href 是相同的。这不是两次调用同一个页面吗?
  • 另外,我不需要 php 页面的回复。我只想重定向到它并传递参数。
  • 您不能在服务器页面中执行此操作。您只能在客户端页面中执行此操作。我认为 php 标头位置在服务器页面中不起作用。
  • gowri,感谢您的慷慨帮助。这不是我想要的,但你会得到 +1 的答案。
猜你喜欢
  • 1970-01-01
  • 2011-01-02
  • 2016-01-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多