Как установить значение текстового поля в jquery

Как правильно загрузить определенное значение в текстовое поле с помощью jquery? Попробовал приведенный ниже, но я получаю [object Object] качестве вывода. Пожалуйста, просветите меня об этом, я новичок в jquery.

proc = function(x, y) {
  var str1 = $('#pid').value;
  var str2 = $('#qtytobuy').value;
  var str3 = $('#subtotal').load('compz.php?prodid=' + x + '&qbuys=' + y);
  $('#subtotal').val(str3);
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>


<form name="yoh" method="get">
  Product id: <input type="text" name="pid" value=""><br/> 
  Quantity to buy:<input type="text" name="qtytobuy" value="" onkeyup="proc(document.yoh.pid.value, this.value);"></br>

  Subtotal:<input type="text" name="subtotal" id="subtotal" value=""></br>
  <div id="compz"></div>

</form>

Ответ 1

Я думаю, вы хотите установить ответ вызова на URL 'compz.php?prodid=' + x + '&qbuys=' + y как значение текстового поля вправо? Если это так, вам нужно сделать что-то вроде:

$.get('compz.php?prodid=' + x + '&qbuys=' + y, function(data) {
    $('#subtotal').val(data);
});

Ссылка: get()

В коде есть две ошибки:

  • load() помещает HTML, возвращенный из Ajax в указанный элемент:

    Загрузите данные с сервера и поместите возвращенный HTML в соответствующий элемент.

    Вы не можете установить значение текстового поля с помощью этого метода.

  • $(selector).load() возвращает объект jQuery. По умолчанию объект преобразуется в [object Object], когда обрабатывается как строка.

Дальнейшее уточнение:

Предполагая, что ваш URL-адрес возвращает 5.

Если ваш HTML выглядит так:

<div id="foo"></div>

то результат

$('#foo').load('/your/url');

будет

<div id="foo">5</div>

Но в вашем коде у вас есть элемент ввода. Теоретически (он недействителен HTML и не работает так, как вы заметили), эквивалентный вызов приведет к

<input id="foo">5</input>

Но вам действительно нужно

<input id="foo" value="5" />

Следовательно, вы не можете использовать load(). Вы должны использовать другой метод, получить ответ и установить его как значение самостоятельно.

Ответ 2

Значение - это javascript для использования языка jQuery, который вы должны использовать

$('#pid').val()

чтобы получить и

$('#pid').val('value')

чтобы установить его.

http://api.jquery.com/val/

Вторая проблема.

Я никогда не пробовал автоматический набор html значения метода загрузки, извините. Конечно, вы можете сделать что-то вроде

$('#subtotal').load( 'compz.php?prodid=' + x + '&qbuys=' + y, function(response){ $('#subtotal').val(response);
});

Проверьте это, я использую рукописное кодирование;)

http://api.jquery.com/load/

Ответ 3

Я хотел бы указать вам, что .val() также работает с выборами для выбора текущего выбранного значения.

Ответ 4

пытаться

subtotal.value= 5 // some value

proc = async function(x,y) {
  let url = "https://server.test-cors.org/server?id=346169&enable=true&status=200&credentials=false&methods=GET&" // some url working in snippet
  
  let r= await(await fetch(url+'&prodid=' + x + '&qbuys=' + y)).json(); // return json-object
  console.log(r);
  
  subtotal.value= r.length; // example value from json
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<form name="yoh" method="get"> 
Product id: <input type="text" id="pid"  value=""><br/>

Quantity to buy:<input type="text" id="qtytobuy"  value="" onkeyup="proc(pid.value, this.value);"></br>

Subtotal:<input type="text" name="subtotal" id="subtotal"  value=""></br>
<div id="compz"></div>

</form>