Ajax отправляет не все данные, а только некоторые

Я действительно не знаю, почему это не работает. data1 и data2 будут отправлены в мою php-форму, но data3 не будет независимо от того, что я установил. Может ли кто-нибудь указать, что не так, что я могу просто не заметить.

    function flap(span) {
    var id1 = span.getAttribute('data-id1');
    var id2 = span.getAttribute('data-id2');
        var lop = id2.slice(8, 1000);
        var lip = id2.slice(0, 8);
        var str = lop;
        var n = str.lastIndexOf("/");
        var res = str.slice(0, n);
        var mac = res;
        var red = mac.lastIndexOf("/");
        var rem = red+1;
        var ret = mac.slice(rem, 1000);
        var slap = ret;
     $.ajax({
        url:'controlmysite/userfiles.php',
        type:'POST',
        data:{
            data1: id1, data3: slap, data2: lip + res,
        },
          success: function(filesDirectory1){
           $('#filesDirectory').html(filesDirectory1);
    }});}

Я изменил data3 на множество разных вещей; я даже установил для него id1, lip, res и ret. Я поменял местами позиции с данными1 и данными2, но данные3 почему-то просто не будут отправляться. Пожалуйста, кто-нибудь укажите, что я явно упускаю из виду. Спасибо за любую помощь.


person Sheepherder    schedule 20.03.2018    source источник
comment
Как вы определяете, что он не отправляет? Как вы определяете, что это имеет ценность?   -  person Tim Morton    schedule 20.03.2018
comment
установить тип данных: 'json'   -  person Jahangir Alam    schedule 20.03.2018
comment
@Sheepherder Можете ли вы зарегистрировать переменную slap и проверить ее значение?   -  person Shiladitya    schedule 20.03.2018
comment
если вы используете хром, перейдите к проверке-›сеть-›нажмите на запрос, отправленный вашим ajax, и посмотрите ответ, и вы можете увидеть ответ   -  person Supun Praneeth    schedule 20.03.2018


Ответы (2)


проблема может быть связана со слишком большим размером 'data3'
попробуйте указать большое значение для "max_input_vars" и "post_max_size" в вашем 'php .ini' или определив его в бигенерировании php-скрипта "controlmysite/userfiles.php"

ini_set('max_input_vars',100000);
ini_set('post_max_size','20M');

вы можете проверить этот пост increasing-the-maximum-post-size

person zakaria35    schedule 20.03.2018

(РЕШЕНО) Это принятый ответ. У меня недостаточно представителей, чтобы проверить ответ :)

Спасибо всем за ваш вклад. Проблема была создана отдельным вызовом функции ajax. мне пришлось добавить в мой php-файл следующее.

       if(isset($_POST['data1']) && isset($_POST['data2']) && isset($_POST['data7'])) {
    $updir = $_POST['data2']; echo $updir."<br>";
    $id1 = $_POST['data1'];
    $id7 = $_POST['data7'];
    $id8 = $_POST['data8'];
       if(isset($_POST['data3'])) {$id3 = $_POST['data3'];}
    echo "<span id='".$updir."' title='".$id1." directory' class='point mud' value='".$updir."' onclick='flap(this)' data-id2='".$updir."'>
    <i class='fa fa-folder-open-o' style='color:blue'></i>&nbsp";
       if(isset($_POST['data3'])) { echo $id3;} else { echo $id7;}; echo "</span><br><br>";
    The rest of php...}

Мой controlmysite/userfiles.php получал 2 отдельных сообщения о функциях ajax, а $id7 переопределял $id3. Два дополнительных if(isset()) решили конфликт.

Я знаю, что эта проблема была ошибкой PHP за пределами сайта с моей стороны, но оставлю вопрос и ответ здесь для справки на случай, если у кого-то еще будет «мозговой пердеж», как у меня во время кодирования. Всем спасибо за уделенное время и хорошего дня.

person Sheepherder    schedule 20.03.2018