Как отправить очень длинные данные в ajax URL? - PullRequest
0 голосов
/ 21 апреля 2020

Я использую php и ajax вместе для доступа к данным от пользователя и вставки в базу данных. Проблема в том, что она отлично работает с небольшой строкой, но когда я пытаюсь отправить данные на 10000 символов, браузер выдает сообщение об ошибке url to long.. я могу внести изменения в php, но я хочу, чтобы он был динамическим c, поэтому я должен использовать его только таким способом .. помогите мне, плз.

function submitQuestion(){
    var x=document.forms['Ask']['title'].value;
    var y=document.forms['Ask']['description'].value;
    if(x.length ==  0 || y.length == 0){
        alert('Insufficient Data');
    }else{

        startLoading();
        console.log(y);
        var xhttp = new XMLHttpRequest();
        xhttp.onreadystatechange = function(){
            if(this.readyState == 4 && this.status==200){
                console.log(this.responseText);
                if(this.responseText == "All Done"){
                    clearInterval(startLoadingClearInt);
                    alert("data Inserted");
                    // window.location.replace('../profile/userprofile.php');
                }
            }
        };

        //here x is very inn some cases and produces an error
        xhttp.open("POST","./submitQuestion.php?title="+x+"&description="+y, true);
        xhttp.send();
    }
}

1 Ответ

1 голос
/ 21 апреля 2020

Вы не можете передавать большие данные через URL (как сказал messerbill). Вы должны отправить их в теле:

function submitQuestion(){
    var x=document.forms['Ask']['title'].value;
    var y=document.forms['Ask']['description'].value;
    if(x.length ==  0 || y.length == 0){
        alert('Insufficient Data');
    }else{

        startLoading();
        console.log(y);
        var xhttp = new XMLHttpRequest();
        xhttp.onreadystatechange = function(){
            if(this.readyState == 4 && this.status==200){
                console.log(this.responseText);
                if(this.responseText == "All Done"){
                    clearInterval(startLoadingClearInt);
                    alert("data Inserted");
                    // window.location.replace('../profile/userprofile.php');
                }
            }
        };

        //here x is very inn some cases and produces an error
        xhttp.open("POST","./submitQuestion.php", true);
        xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
        xhttp.send("title="+x+"&description="+y");
    }
}

внутри PHP -Script, который вы получаете данные через массив $ _POST, а не через массив $ _GET!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...