将所选选项附加到FormData

Append selected option to FormData

本文关键字:FormData 选项      更新时间:2023-09-26

我正试图将用户选择的<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。

您可以尝试这样的操作来获取值:而不是:var internChoice=$('#internType').val()

尝试:var internChoice=$('#internType选项:已选择').val()