2013-08-06 2 views
2

Я пытаюсь отправить заявку в мою систему php, используя запрос на получение «.get()».jQuery .get(), представляя значения в/из формы

Я пытался интерпретировать документацию, и я чувствую, что у меня есть все правильные шаги.

Несмотря на это, вот мой HTML:

<div id="1001AIE0322921TTGOD" class="item"> 
    <input name="userbid" type="input" value="19.95"/> 
    <input name="email-id" type="hidden" value="[email protected]" /> 
    <input type="button" class="submit-button" value="click"/> 
</div> 

А вот мой JavaScript:

$(document).ready(function(){ 
    var email = $("input[name=email]").val(); 
    var item = $('div').attr('id'); 
    var bid = $("input[name=userbid]").val(); 

    $('.submit-button').click(function(){ 
     $.get(
      "http://qwicksale.com/classes/insertbid.php", 
      { 
       item-id: item, 
       email-id: email, 
       userbid: bid 
      } 
     ); 
    }); 
}); 

Очевидно мой ожидаемый результат должен быть в состоянии отправить заявку на задний конец. Я хотел бы использовать form.serialize(), но я извлекаю данные своего элемента из идентификатора div.

Любая помощь приветствуется.

+0

Это выглядит нормально, вы возникли какие-либо конкретные проблемы? –

+0

Вы не против? '$ .get (" url ", {}, function (data) {alert (data);});' – M1K1O

+0

вы можете добавить id div в качестве скрытого ввода в свою форму ... и, таким образом, сможете использовать formizeize(). – scunliffe

ответ

2

Прочитав ваш вопрос и несколько замечаний, я вижу несколько проблем, но нет ответа, который включает в себя все их:

Эта линия:

var item = $('div').attr('id'); 

Получает идентификатор первого DIV на страница, возможно, не та, которую вы ищете. Вместо этого, сделать что-то вроде этого:

var item = $(this).closest('.item').attr('id'); 

Во-вторых, объект литералы не может иметь в них -. Измените свой объект на это:

{ 
    'item-id': item, 
    'email-id': email, 
    userbid: bid 
} 

В-третьих, похоже, что вы ограничены одной политикой происхождения. Вы не можете выполнять кросс-доменные запросы ajax из браузера, если вы не используете JSONP или CORS.

В-четвертых, просит внести изменения в данных или сделать что-то должно быть в целом POST запросы, не GET.

Проблемы со 2 и 3 должны отображаться на консоли ошибок.

Редактировать Еще одна большая проблема: вы захватываете значения, отправляемые при загрузке страницы, поэтому, если кто-то их изменяет, изменения не будут отправляться на сервер. Поместите три строки, которые извлекают значения внутри обработчика кликов, перед вызовом ajax.

+0

+1, инкапсулирует большинство проблем в одном ответе (но пропускает уже выпущенную проблему :) –

+0

Я процитировал литералы объектов и поместил файл в тот же домен и переключился на запрос POST (соответственно изменил мой сервер). , он, похоже, не работает. Я нажимаю кнопку, и ничего не происходит - ничего в консоли. – Alpinestar22

+1

@ Alpinestar22 Затем запустите отладку, добавив 'console.log', чтобы увидеть, где выполняется остановка и т. Д. –

-1

Вы пытаетесь отправить форму на сервер правильно?

Если это так, вы хотите использовать $.post. http://api.jquery.com/jQuery.post/

Кроме того, как и другие ответы указали ваш объект не отформатирован правильно, так что даже если мы не выяснить, если вы действительно хотите post или get ни работать не будет.

{ 
    "item-id": item, 
    "email-id": email, 
    "userbid": bid 
} 
+0

GET, POST, это только метод HTTP. Я бы предпочел * POST для этого, но почему эта часть важна? –

+0

Оба инициируют запрос на сервер. Поскольку он не заявлял о своем намерении передать значения на сервер, мы не можем сказать, какой из них следует использовать. Если его намерение заключается в изменении состояния приложения, чем в спецификации HTTP, он должен использовать пост. – asymptoticFault

+0

@DaveNewton Поскольку, если его серверный метод ищет данные 'post', он не найдет его, если он использует' get' на клиенте. – Jack

2

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

$(document).ready(function(){ 

    $('.submit-button').click(function(){ 
     var email = $("input[name=email]").val(); 
     var item = $('div').attr('id'); 
     var bid = $("input[name=userbid]").val(); 
     $.get(
      "http://qwicksale.com/classes/insertbid.php", 
      { 
       "item-id": item, 
       "email-id": email, 
       "userbid": bid 
      } 
     ); 
    }); 
}); 

редактировать со ссылкой на данные объекты ключей, для здравомыслия.

+0

+1; также довольно неправильная вещь в исходном коде. –

0

Чувак, не уверен, что о вашей ошибке, но когда я попытался в скрипку я получал как "Контроль доступа ...

здесь я модифицировал изменения Fiddle Demo

$.getJSON(
      "http://qwicksale.com/classes/insertbid.php?item-id="+item+'&email-id='+email+'&userbid='+bid+"&format=json&callback=?", 
      function(data) { 
    console.log(data); 
}); 

FYI

Получение ошибки в Неустранимая ошибка: исключить исключение «PDOException» с сообщением «SQLSTATE [23000]: нарушение ограничения целостности: 1048 Столбец« User_email »не может быть« null »в/var/zpanel/hostdata/zadm в/public_html/qwicksale_com/классов/insertbid.php: 47 в insertbid.php:

1

Это решение получает работу без необходимости пропускать serialize().

$(document).ready(function() { 
    $('.submit-button').click(function (event) { 
     var $item = $(this).closest('.item'); 
     var formData = $(':input', $item).serialize() + '&item-id=' + $item.attr('id'); 
     $.get('http://qwicksale.com/classes/insertbid.php', formData, function (response) { 
      // Handle the response 
     }); 
     event.preventDefault(); 
    }); 
}); 

Fiddle: http://jsfiddle.net/68W59/

Смежные вопросы