首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >%5B尝试通过AJAX提交时,对象%20对象%5D (404未找到)

%5B尝试通过AJAX提交时,对象%20对象%5D (404未找到)
EN

Stack Overflow用户
提问于 2012-04-28 04:30:42
回答 5查看 17.1K关注 0票数 17

我正在尝试通过ajax将变量传递给将运行MySQL查询的PHP脚本。然而,我一直收到错误404没有找到:"http://myurl/database/%5Bobject%20Object%5D"

看起来它试图将数据发送到http://myurl/database/%5Bobject%20Object%5D,而不是我定义的PHP脚本。在这件事上真的不知所措...我想把绝对URL放进去就行了。

下面是我的代码。会永远感谢你的帮助……

代码语言:javascript
复制
<script type="text/javascript">
function insertData()
 {
    var dataid= $('#dataid').attr('value');
    var industry = $('#industry').attr('value');
   var geolocation = $('#geolocation').attr('value');
    $.post({
        type: "POST",
        url: "http://myURL/database/InsertData.php",
        data: "dataid="+ dataid+"&amp;industry="+ industry +"&amp;geolocation="+ geolocation,
        });
return false;
};

</script>
EN

回答 5

Stack Overflow用户

发布于 2012-04-28 19:56:11

正如andi所说,$.post需要一个URL字符串作为第一个参数;如果您想要传递一个option对象,则必须使用$.ajax

当您尝试调用$.post(<option object>)时,option对象被用作一个URL;在此过程中,它被转换为一个字符串(转换为字符串的对象在Javascript中变为[object <type>];在本例中为[object Object]),它得到URL编码(%5Bobject%20Object%5D),并且由于它不是以/或协议名称开头,因此它被解释为相对URL,并使用当前协议、域和路径作为前缀。然后,由于没有更多的参数,将向该URL发送一个空的POST AJAX请求。

另一个问题是,您使用&amp;来分隔参数;这应该只在HTML语言中完成,在这里您应该只使用&。(或者像Evan所说的数据对象,这样您就不需要考虑编码问题了。).val().attr('value')是不同的;第一个是字段的当前值,第二个是加载页面时的值。

正确做到这一点的最简单方法是:

代码语言:javascript
复制
function insertData() {
    var data = $('#dataid,#industry,#geolocation').serialize();
    $.post('http://myURL/database/InsertData.php', data);
    return false;
}

这假设这三个字段具有相同的nameid,因为$.serialize使用name作为参数名称。

票数 19
EN

Stack Overflow用户

发布于 2012-04-28 04:42:06

您应该将$.post更改为$.ajax,或者将URL和数据作为参数传递。$.post只是$.ajax的简写,它将URL作为第一个参数。

所以它应该是:

代码语言:javascript
复制
$.ajax({
    type: "POST",
    url: "http://myURL/database/InsertData.php",
    data: "dataid="+ dataid+"&amp;industry="+ industry +"&amp;geolocation="+ geolocation
});

或者,使用$.post

代码语言:javascript
复制
$.post("http://myURL/database/InsertData.php", "dataid="+ dataid+"&amp;industry="+ industry +"&amp;geolocation="+ geolocation);

请记住,这些文档几乎总是有用的

票数 9
EN

Stack Overflow用户

发布于 2012-04-28 04:37:06

尝试在对象中发送数据,如下所示:

代码语言:javascript
复制
data: {
    dataid : dataid,
    industry : industry,
    geolocation : geolocation
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10357445

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档