Подтвердить что ты не робот

Как передать переменные с помощью XMLHTTPRequest

Как отправить переменные на сервер с помощью XMLHTTPRequest? Я просто добавлю их в конец URL-адреса запроса GET, например ?variable1=?variable2= и т.д.

Так больше или меньше:

XMLHttpRequest("GET", "blahblah.psp?variable1=?" + var1 + "?variable2=" + var2, true)
4b9b3361

Ответ 1

Если вы хотите передать переменные на сервер с помощью GET, это будет да. Не забудьте убежать (urlencode) их правильно!

Также возможно использовать POST, если вы не хотите, чтобы ваши переменные были видимыми.

Полный образец:

var url = "bla.php";
var params = "somevariable=somevalue&anothervariable=anothervalue";
var http = new XMLHttpRequest();

http.open("GET", url+"?"+params, true);
http.onreadystatechange = function()
{
    if(http.readyState == 4 && http.status == 200) {
        alert(http.responseText);
    }
}
http.send(null);

Чтобы проверить это, (используя PHP), вы могли бы var_dump $_GET посмотреть, что вы получаете.

Ответ 2

Вручную форматирование строки запроса отлично подходит для простых ситуаций. Но это может стать утомительным, когда есть много параметров.

Вы можете написать простую функцию утилиты, которая обрабатывает форматирование запроса для вас.

function formatParams( params ){
  return "?" + Object
        .keys(params)
        .map(function(key){
          return key+"="+encodeURIComponent(params[key])
        })
        .join("&")
}

И вы должны использовать его таким образом, чтобы создать запрос.

var endpoint = "https://api.example.com/endpoint"
var params = {
  a: 1, 
  b: 2,
  c: 3
}

var url = endpoint + formatParams(params)
//=> "https://api.example.com/endpoint?a=1&b=2&c=3"

Существует множество функций утилиты для управления URL-адресами. Если у вас есть JQuery в вашем проекте, вы можете попробовать http://api.jquery.com/jquery.param/.

Он похож на приведенную выше функцию примера, но обрабатывает рекурсивно сериализует вложенные объекты и массивы.

Ответ 3

Правильный формат передачи переменных в запросе GET

?variable1=value1&variable2=value2&variable3=value3...
                 ^ ---notice &--- ^

Но, по сути, у вас есть правильная идея.

Ответ 4

Ниже приведен правильный путь:

xmlhttp.open("GET","getuser.php?fname="+abc ,true);

Ответ 5

Да, что правильный метод сделать это с помощью запроса GET.

Однако помните, что несколько параметров строки запроса должны быть разделены символом &

например.? Переменная1 = значение1 & переменная2 = значение2

Ответ 6

Как насчет?

function callHttpService(url, params){
  // Assume params contains key/value request params
  let queryStrings = '';

  for(let key in params){
      queryStrings += '${key}=${params[key]}&'
    } 
 const fullUrl = '${url}?queryStrings'

  //make http request with fullUrl
}

Ответ 7

Если у вас аллергия на конкатенацию строк и вам не нужна совместимость с IE, вы можете использовать URL и URLSearchParams:

const target = new URL('https://example.com/endpoint');
const params = new URLSearchParams();
params.set('var1', 'foo');
params.set('var2', 'bar');
target.search = params.toString();

console.log(target);