【问题标题】:Post SELECT element value发布 SELECT 元素值
【发布时间】:2009-08-11 09:37:03
【问题描述】:

我使用 jquery 将数据发布到 mysql。

 **In settings.php i have this short JS code:**

 $("form#submit").submit(function() {
    var fname     = $('#fname').attr('value');
    var lname     = $('#lname').attr('value'); 
    $.ajax({
        type: "POST",
        url: "settings.php",
        data: "fname="+ fname +"& lname="+ lname,
        success: function(){
            $('form#submit').hide();
            $('div.success').fadeIn();
        }
    });
return false;
});


**And this short php:**


 if (isset($_POST['fname'])){
        $fname        = htmlspecialchars(trim($_POST['fname']));
           DO SOMETHING....
 }

这是 FNAME 的来源代码:(点击 ADD image-button 然后发布 fname 值..)

echo "......
      <form id='submit$i' method='post'><input type='hidden' name='fname' id='fname' class='text' value='$fm_linkaz'></div><input name='add'type='image' id='add' value='$fm_linkaz' src='s.png'/></form>..........";

这很好用。但我需要一个 SELECT 元素,所以我将代码更改为:

 ......

   echo "<select name=dropdown_list id='**ONAME**'><option value''>test</option>";
   for($i=0; $i < count($myarray); $i++){
   echo "<option value='$myarray[$i]'>$myarray[$i]</option>";}echo "</select>";

   ......</form>";

这很好用,但我不知道如何修改 JS 代码,也可以发布选定的值。
谢谢你的帮助。

【问题讨论】:

    标签: php jquery mysql


    【解决方案1】:

    首先,javascript 代码需要一些更新:

    $('#fname').val() 优于 $('#fname').attr('value') -- .val() 也适用于选择/复选框 - 其中.attr('value') 不可靠。

    第二:$.ajax() 调用的数据参数可以采用 json 对象(它将转换为表单字符串)

    $.ajax({
      type: "POST",
      url: "settings.php",
      data: {
        'fname': $('#fname').val(),
        'lname': $('#lname').val(),
        'oname': $('#oname').val()
      },
      success: function(){
        $('form#submit').hide();
        $('div.success').fadeIn();
      }
    });
    

    有一个plugin 让这更容易:

    $("form").ajaxForm({
       success: function(){
         $('form#submit').hide();
         $('div.success').fadeIn();
       }
    });
    

    更新:

    另外 - &lt;select&gt; 元素被命名为“dropdown_list” - 也许您希望它以“oname”的形式提交数据。表单元素使用“name”属性提交,id属性只会让css/js选择器更容易编码。

    【讨论】:

    • 我确实按照你所说的进行了更改..但是,在我按下按钮后,我用它来测试 ONAME 是否已发布... if (isset($_POST['oname'])) { 回声“好”;但是没有回声,所以这段代码有问题。下拉菜单有效,只是没有发布任何值.. echo "....something...
      "; for($i=0; $i $myarray[$i]"; }echo "";...........
    • 您的字段“name”是“dropdown_list”——不是“oname”,这可能是问题所在吗?检查 $_POST['dropdown_list'] ?
    • 另外 - 我在另一条评论中注意到您有 - 更新了代码以选择 $( "#oname") 而不是 $("select[@name=dropdown_list]"); - 似乎
    • 你是对的..:) 使用 $_POST['dropdown_list'] 检查没问题..我从 SELECT 元素中获取选定的值..但是代码的 ajax 部分仍然不起作用。 .. 检查 POST 然后: $fname= htmlspecialchars(trim($_POST['fname'])); $oname= htmlspecialchars(trim($_POST['oname']));但是我得到未定义的索引oname错误......所以ajax部分仍然有问题......
    • 否 - $_POST['oname'] 未在 ajax 请求中设置 - 只需将您的选择名称更改为 'oname' 并且很多问题可能会消失 - 您需要在 ajax 提交中也将其从“dropdown_list”更改为“oname”(答案已更新以包含该更改)
    【解决方案2】:

    获取选定的值以供使用

    jQuery('#**ONAME**').val();
    

    虽然我不确定 **ONAME** 是否是有效 ID,但请尝试删除 **

    【讨论】:

      【解决方案3】:

      要获取值,请使用

      $('select[name=dropdown_list]').val();
      

      你也可以使用和 ID,但我认为你有一些无效的字符,我怀疑这会起作用:

      $('select#**ONAME**').val();
      

      无论如何.val() 就是您要找的。我还建议使用val() 而不是attr('value')

      【讨论】:

      • 没有星星..我点击粗体按钮等等......无论如何..我尝试你的建议,但我对发布数据有问题,因为:点击按钮后,我使用这个用于测试 ONAME 是否已发布的短代码: if (isset($_POST['oname'])){ echo "Ok";但是没有回声,所以这段代码有问题。下拉菜单有效,只是没有发布任何值.. echo "....something...
        "; for($i=0; $i $myarray[$i]"; }echo "";...........
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-11-11
      • 1970-01-01
      • 2014-10-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-19
      相关资源
      最近更新 更多