无法使用Ajax提交字段值

时间:2013-12-30 10:50:41

标签: javascript jquery ajax

我知道有一个类似的问题,但我尝试了一切,似乎没有任何工作。我对ajax并不是那么好,这就是我发布这个问题的原因。

$("#buttons_holder").find("#add_users").click(function() {
    var ob = document.getElementById('all_users[]');
    var selected = new Array();
    for (var i = 0; i < ob.options.length; i++) {
        if (ob.options[i].selected) {
            selected.push(ob.options[i].value);
        }// if
    }// for
    var selected_users = selected;
    var link = $("#buttons_holder").find("#add_users").attr('href');
    $.ajax({
        url: link,
        type: 'POST',
        data: {
          s : selected_users
        },
        'success': function(data){
            alert ('succes');
        },
        'error' : function(data) {
            alert ('fail');
        }
    });
});

我总是收到警报失败。我尝试在功能之前提醒所有参数(selected_users,link),一切似乎都没问题。谁能告诉我什么可能是一个问题?非常感谢你的答案。

编辑:这是我的HTML代码:

<div class="main_content">
      <div id="users_holder">
<div class="div_grids">
    <div class="inline_wrapper">
      <h4>Users that belong to selected company:</h4>
        <label for="company_users">
            <select multiple="" name="company_users[]" id="company_users[]">
                                        <option value="1">admin@sms.com</option>
                                        <option value="3">b@bba.com</option>
                                        <option value="5">dfsdf@dmfkdmf.com</option>
                                </select>
        </label>
    </div>
    <div style="margin-top:2%; margin-left:5%; margin-right:5%" id="buttons_holder" class="inline_wrapper">
        <div class="common_add_button">
             <a id="remove_users" name="remove_users" href="http://localhost/cake/crawler/companies/1/manage-agents/remove"> &gt;&gt; </a>
        </div>

        <div class="common_add_button">
            <a id="add_users" name="add_users" href="http://localhost/cake/crawler/companies/1/manage-agents/add"> &lt;&lt; </a>
        </div>
    </div>
    <div class="inline_wrapper">
        <h4>All users:</h4>
            <label for="all_users">
                <select multiple="" name="all_users[]" id="all_users[]">
                                                <option value="4">11111@qweqwe.com</option>
                                        </select>
            </label>
    </div>
</div>

解决方案:

$("#buttons_holder").find("#add_users").click(function() {

    var selected_users = $('#all_users option:selected').map(function() {
        return this.value
    }).get();
    var link = '{$add_users_link}';
    $.ajax({
        url: link,
        type: 'POST',
        data: {
            'new_users' : selected_users
        },
        'success': function(data) {
            App.Messages.showOkFlashMessage(data);
        },
        'error': function(data) {
            App.Messages.showErrorFlashMessage(data.responseText);
        }
    });
    return false;
});

2 个答案:

答案 0 :(得分:0)

当我使用Ajax和数组时,我总是将数据作为字符串传递并在服务器上反序列化。 既然参数似乎对你没问题,也许你可以试试这个:

$.ajax({
    url: link,
    type: 'POST',
    data: { s : JSON.stringify(selected_users) },
    'success': function(data) { alert ('success'); },
    'error': function(data) { alert ('fail'); }
});

答案 1 :(得分:-1)

@Marko Vasic Ajax需要Json格式数据,所以你必须以json格式发送数据  JSON.stringify({s:selected_users})

var selected_users = selected;
var link = $("#buttons_holder").find("#add_users").attr('href');
$.ajax({
    url: link,
    type: 'POST',
    data: 
     JSON.stringify({ s: selected_users }),

    'success': function(data){
        alert ('succes');
    },
    'error' : function(data) {
        alert ('fail');
    }
});

});