2

我正在尝试使用获取请求“.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 中检索我的项目数据。

任何帮助表示赞赏。

4

5 回答 5

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
            }
        );
    });
});

编辑引用数据对象键,以保持理智。

于 2013-08-06T13:37:46.093 回答
2

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

这一行:

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

获取页面上第一个 div 的 ID,可能不是您要查找的那个。相反,请执行以下操作:

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

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

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

第三,听起来您受到了同源政策的限制。除非您使用 JSONP 或 CORS,否则您无法从浏览器执行跨域 ajax 请求。

第四,对数据进行更改或做某事的请求通常应该是POST请求,而不是GET.

问题 2 和 3 应该已显示在您的错误控制台中。

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

于 2013-08-06T13:45:52.987 回答
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/

于 2013-08-06T14:09:14.873 回答
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); 
});

供参考

在致命错误中出现错误:未捕获的异常 'PDOException' 带有消息'SQLSTATE [23000]:完整性约束违规:/var/zpanel/hostdata/zadmin/public_html/qwicksale_com/classes/insertbid 中的 1048 列 'User_email' 不能为空。 php:47 在 insertbid.php:

于 2013-08-06T13:55:36.307 回答
-1

您正在尝试将表单提交到服务器吗?

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

同样正如其他答案指出的那样,您的对象格式不正确,因此即使我们确实确定了您是否真的想要 apostget两者都不会起作用。

{
    "item-id": item,
    "email-id": email,
    "userbid": bid
}
于 2013-08-06T13:35:54.513 回答