0

我有一些代码从下拉菜单中提取值并将该值用作 AJAX 调用中的参数。

代码看起来像这样:

HTML

<select class='FormDropDown ' id='ass-assessmentReason' name='ass-assessmentReason'>  
    <option value='Emergency'>Emergency</option>
    <option value='Follow-up'>Follow-up</option>
    <option value='Nurse Call'>Nurse Call</option>
</select>

JS

$('#ass-assessmentReason').change(function() {
    var selectedOption = $(this).find(":selected").text().replace(/ /g,"_"); // Replace whitespace with _ for URL transportation
    console.debug(selectedOption);
    $.ajax({
        type: "POST",
        url: "otrFollowUp.php",
        data: "followup=" + selectedOption,

我已经切断了其余的代码,但是当所选的下拉选项没有空格时,这绝对可以正常工作,但是它会截断任何带有空格的值。

正如你所看到的,我试图通过用下划线临时替换空格然后在 otrFollowUp.php 中反转它来解决这个问题。我不明白的是,当我查看控制台调试器时,我看到了“Nurse_Call”,但是当我查看它试图调用的 URL 时,我看到了“otrFollowUp.php?followup=Nurse”

由于某种原因,它忽略了下划线,发送带有空格的下拉值,截断正确的选项值并破坏脚本的其余部分。由于在 AJAX 调用之前的 console.debug() 显示它成功地用下划线替换了空格,我很难理解它为什么这样做。

4

2 回答 2

2

从技术上讲,您甚至不应该在 URL 中看到参数,因为您使用的是 POST 方法(GET 将通过 URL 传递它们)。因此,如果您希望在 URL 中使用它,请尝试将其切换为 GET。另外,尝试将数据作为对象而不是字符串,例如

data: { "followup": selectedOption },

让我知道是否有任何问题,如果您有任何问题:)

于 2013-08-07T16:23:52.563 回答
0

这里不需要 jquery,只需获取 select 元素的值并调用 replace() 即可:

var selectedOption = this.value.replace(/ /g, "_");

工作演示

于 2013-08-07T16:26:45.727 回答