【问题标题】:trying to pass a jquery variable into a query string试图将 jquery 变量传递到查询字符串中
【发布时间】:2013-11-19 20:54:48
【问题描述】:

我有两个单选按钮,我想获取它们的选中值,然后传递给 url 查询字符串:

这里是html

<h3>Please select an audience</h3>
  <p><input class="age" type="radio" name="ageLimit" value="allAge"/> All ages </p>
  <p><input class="age" type="radio" name="ageLimit" value="mature"/> Mature</p>

这是js:

当我使用这个时,数据库会拉出 [object, Object]

url : 'upload.php?aud='+$('input[name="ageLimit"]:checked', '#myForm').val($('input:radio[name="ageLimit"]:checked', '#myForm')),

当我使用它时,它只提取第一个变量

url : 'upload.php?aud='+$('input[name="ageLimit"]:checked', '#myForm').val(),

如何让选中的变量传递到查询字符串中?我看过几个关于 SO 的类似问题,但没有处理查询字符串

【问题讨论】:

  • 我看不到你的JS;你能更新一下吗?
  • 查看val() 的文档。它需要一个字符串作为参数而不是 jquery 对象。
  • 第一个拉出 [object, Object] .. 您正在 设置 值 .. 在拉出第一个变量的第二个实例中,您正在 得到 值.. jQuery val() 方法可用于 setget 值 - api.jquery.com/val/#val2 -

标签: jquery html radio-button


【解决方案1】:

使用 jQuery 的 serialize 将您的表单压缩成一个查询字符串:

$('#myForm').serialize()

$('input[name="ageLimit"]:checked', '#myForm').serialize()

当您将 jQuery 对象转换为字符串时,您会得到 [Object object]。您的第一个示例设置表单元素的值,然后返回 jQuery 对象,以便您可以在其上链接其他方法。

您的第二次尝试使用val(),将返回您所追求的值。如果您想获得 几个 值,则必须选择元素,然后将 map 设置为它们的值,然后加入结果数组。但你不应该这样做。你应该使用serialize 为你做这件事。

【讨论】:

  • 我确信这是一个很棒的解决方案,但我是 jquery 的总 c#&p。我把这个放在哪里?目前我收到undefined
  • 现有代码所在的位置。 url: 'upload.php?aud=' + $('input...','#myForm').serialize().
  • 现在我从url : 'upload.php?aud='+$('input[name="ageLimit"]:checked', '#myForm').serialize(), 得到一个空字符串,我还需要val() 吗?感谢您的耐心等待。
  • 否,但如果您的选项未选中或被禁用,它们将序列化为""。你也可能没有选择你认为的元素。
  • 我刚刚检查了选项是否被禁用,而它们不是。你能想到 serialize() 在这里可能不起作用的任何其他原因吗? if (!$('.age:radio').is(':disabled')){ alert('The radio group is not disabled.'); } if ($('.age:radio').is(':disabled')){ alert('The radio group is disabled.'); }
【解决方案2】:

捕捉到上面的序列化。我个人喜欢 ajaxForm 插件 (http://malsup.com/jquery/form/)。

如果您的目标是将选定的单选值放入 url,然后在 jsfiddle 上使用它(下面的链接)。

http://jsfiddle.net/NQ6wH/

<h3>Please select an audience</h3>
<form>
  <p><input class="age" type="radio" name="ageLimit" value="allAge"/> All ages </p>
  <p><input class="age" type="radio" name="ageLimit" value="mature"/> Mature</p>
</form>
<button id="testMe">Test Me</button>

$('#testMe').click(function(e){
    e.preventDefault();
    var url = 'upload.php?aud=' + $('input[name=ageLimit]:checked').val();
    alert(url);
});

【讨论】:

  • 测试按钮说我得到了正确的值,但是当我这样做时,我得到了一个未定义的值。为什么会这样? url : 'upload.php?aud=' + $('input[name=ageLimit]:checked').val(),
【解决方案3】:

事实证明,我的问题完全出在其他地方,上传者需要评估/传递单选按钮。啊啊啊。感谢所有的帮助! -

这是链接:Why am I getting "undefined" passed to the db? jquery php plupload

var uploader = $('#uploader').plupload('getUploader');

uploader.bind('BeforeUpload',function(upldr,file){
upldr.settings.url = 'upload.php?aud=' + $('input[name="ageLimit"]:checked', '#myForm').val();
// here some runtimes might need a upldr.refresh(); (Though I'm not sure, I guess I remember Flash would.)
}
);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-11-15
    • 2012-06-25
    • 1970-01-01
    • 1970-01-01
    • 2013-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多