【问题标题】:PHP and Javascript CommunicationPHP 和 Javascript 通信
【发布时间】:2015-04-28 10:00:47
【问题描述】:
<form action="../">
<select onchange="window.open(this.options[this.selectedIndex].value,'_top')">
    <option value="">Choose a zipcode </option>
    <option value="92507">92507</option>
    <option value="30078">30078</option>
    <option value="92606">92606</option>
    <option value="30004">30004</option>
    <option value="32034">32034</option>
    <option value="37160">37160</option>
</select>
</form>

我创建了一个下拉菜单,用户可以在其中选择邮政编码。我想将用户选择的邮政编码发送到 php 脚本。这个怎么办?

这是我到目前为止所做/理解的。我需要在我的 php 文件中添加这行代码 $php_variable = $_GET['param1'];,这会将邮政编码作为 javascript 通过 url 发送的 param1。我可以在我的 javascript 中使用 ajax 函数并调用一个帖子来发送数据。我在正确的轨道上吗?我如何实际将用户选择的邮政编码保存到变量中。 ajax也不应该在脚本中吗?我也可以将下拉菜单放在脚本部分吗?

差不多了。当前的问题是,当我单击特定的邮政编码时。这是我得到的网址 http://localhost:8888/92606 而不是 http://localhost:8888/getuv.php?param1=92606

【问题讨论】:

  • 调用一个函数onchange下拉然后通过AJAX调用将下拉值发送到PHP页面。

标签: javascript php html ajax communication


【解决方案1】:

您忘记了 name 属性,而您的 onchange 方法只是打开了一个以 param1 作为 url 的新窗口。

<form action="../">
    <select name="param1" onchange="this.form.submit()">
        <option value="">Choose a zipcode </option>
        <option value="92507">92507</option>
        <option value="30078">30078</option>
        <option value="92606">92606</option>
        <option value="30004">30004</option>
        <option value="32034">32034</option>
        <option value="37160">37160</option>
    </select>
</form>

【讨论】:

    【解决方案2】:
    <form action="page.php" method="post">
    <selecton name="zip" onchange="window.open(this.options[this.selectedIndex].value,'_top')">
    <option value="">Choose a zipcode </option>
    <option value="92507">92507</option>
    <option value="30078">30078</option>
    <option value="92606">92606</option>
    <option value="30004">30004</option>
    <option value="32034">32034</option>
    <option value="37160">37160</option>
    </select>
    </form>
    

    在 page.php 上你应该像这样编写代码

    <?php
    $code=$_POST['code'];
    echo 'the zip code is'.$code;
    ?>
    

    【讨论】:

    • 没有打印出来。我得到了这个在此服务器上找不到请求的 URL /92507。
    【解决方案3】:

    你应该尝试jquery方式的前端。

    <select id="myList">
        <option value="">Choose a zipcode </option>
        <option value="92507">92507</option>
        <option value="30078">30078</option>
        <option value="92606">92606</option>
        <option value="30004">30004</option>
        <option value="32034">32034</option>
        <option value="37160">37160</option>
    </select>
    
    
    
    $("#myList").change(function () {
        var myValue = $("#myList option:selected").val();
        sendToServer(myValue);
    });
    var sendToServer = function(myValue){
     // Use some ajax
        jQuery.ajax(
            type: "GET",
                url: 'http://host.com/' +'param1='+ myValue,
                beforeSend: function(){ 
                    // do something
                },
                success: function(data){
                    // success 
                }
            });
    }
    

    【讨论】:

      【解决方案4】:

      您需要在选择标签中将'param1'分配给名称:

      code:
      

      <form action="../"> <select name = 'param1' onchange="window.open(this.options[this.selectedIndex].value,'_top')">
          <option value="">Choose a zipcode </option>
          <option value="92507">92507</option>
          <option value="30078">30078</option>
          <option value="92606">92606</option>
          <option value="30004">30004</option>
          <option value="32034">32034</option>
          <option value="37160">37160</option> 
      </select> 
      </form>

      【讨论】:

      • 在此服务器上找不到请求的 URL /92507。这是我得到的错误。我尝试打印出邮政编码。
      • 哦!您还需要更改 action 属性并指向您的 PHP 文件。
      • 我做到了。我的 php 文件名为 getuv.php &lt;form action="getuv.php" method="post"&gt; &lt;select name = 'param1' onchange="window.open(this.options[this.selectedIndex].value,'_top')"&gt;
      • 你为什么使用window.open?这意味着,您正在尝试打开一个有关更改的新窗口(应该是一个 url)。
      猜你喜欢
      • 1970-01-01
      • 2012-11-16
      • 1970-01-01
      • 2011-07-10
      • 1970-01-01
      • 1970-01-01
      • 2013-12-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多