jQuery .get(),在表单中提交/输出值

时间:2013-08-06 13:32:09

标签: jquery

我正在尝试使用get请求“.get()”。

向我的php系统提交出价

我一直试图解释文档,我觉得我的大部分步骤都是正确的。

无论如何,这是我的HTML:

<div id="1001AIE0322921TTGOD" class="item">
    <input name="userbid" type="input" value="19.95"/>
    <input name="email-id" type="hidden" value="whatever@iwin.com" />
    <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的id中检索我的项目数据。

感谢任何帮助。

5 个答案:

答案 0 :(得分: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
            }
        );
    });
});
为了理智,

编辑引用数据对象键。

答案 1 :(得分:2)

通过阅读你的问题和几条评论,我看到了一些问题,但没有答案包含所有问题:

这一行:

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

获取页面上第一个div的ID,可能不是您要查找的那个。相反,做这样的事情:

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

其次,对象文字中不能包含-。将您的对象更改为:

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

第三,听起来你受到同一原产地政策的限制。除非使用JSONP或CORS,否则不能从浏览器执行跨域ajax请求。

第四,对数据进行更改或执行某些操作的请求通常应为POST个请求,而不是GET

问题2和3应该出现在您的错误控制台中。

编辑另一个大问题:您正在抓取页面加载时要发送的值,因此如果有人更改了这些值,则更改将不会发送到服务器。在ajax调用之前,将检索值的三行放在click处理程序中。

答案 2 :(得分: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();
    });
});

小提琴:http://jsfiddle.net/68W59/

答案 3 :(得分:0)

老兄,不确定你的错误,但是当我尝试小提琴的时候我就是这样 &#39;访问控制......&#39;

这里我修改了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

错误输入 致命错误:未捕获的异常&#39; PDOException&#39;消息&#39; SQLSTATE [23000]:完整性约束违规:1048列&#39; User_email&#39;不能为空&#39;在/var/zpanel/hostdata/zadmin/public_html/qwicksale_com/classes/insertbid.php:47 在 insertbid.php:

答案 4 :(得分:-1)

您是否尝试将表单提交给服务器?

如果是这种情况,您将需要使用$.posthttp://api.jquery.com/jQuery.post/

另外,正如其他答案所指出的那样,您的对象格式不正确,所以即使我们确定您确实需要postget也不会有效。

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