将所选选项附加到FormData

时间:2014-10-09 18:30:03

标签: javascript php jquery ajax

我正在尝试将用户选择的<option>附加到发送到php页面的ajax调用中。 (我对ajax或jQuery不是很熟悉)

我已经构建了一个JSFiddle,希望它能比我解释它更容易理解。以下是它的要点:

HTML

<select name="internType" style="width: 100%; display: block; color: #000;" id="internType">
    <option selected value="default">Please Select</option>
    <option value="accounting">Accounting</option>
    <option value="auditing">Auditing</option>
    <option value="finance">Finance</option>
    <option value="humanresources">Human Resources</option>
</select>

的jQuery

formData = new FormData( $(this)[0] );
self.sendData(formData);

sendData : function(formData){
    var self = this;
    var internChoice = $('#internType').val()   // This doesn't seem to hold the value
    formData.append('internChoice', internChoice);  // but rather the entire list
    console.log(formData);
    $.ajax({
        url: self.settings.path + '?i=' + self.settings.app ,
        type: 'POST',
        data: formData,
        async: false,
        success: function (data) {
            console.log(data);
            outcome = jQuery.parseJSON( data );
            self.handleOutcome(outcome);
        },
        cache: false,
        contentType: false,
        processData: false
    });
},

当我var_dump($_POST);时,我收到从输入传递的数据,但是从下拉列表中我收到一个包含所有值的字符串。例如:

["internSelect"]=>
string(130) "
    Please Select
    Accounting
    Auditing
    Finance
    Human Resources
"

我做错了什么,怎样才能更好地解决我做错的问题?

我丢失了选定的值吗?页面永远不会刷新,所以我不确定是怎么回事。

如果您需要知道,我正在使用jQuery 1.10.2。

1 个答案:

答案 0 :(得分:2)

你可以尝试这样的东西来获得价值: 代替: var internChoice = $(&#39; #internType&#39;)。val()

尝试: var internChoice = $(&#39; #internType option:selected&#39;)。val()