18

我正在尝试通过 ajax 将变量传递给将运行 MySQL 查询的 PHP 脚本。但是,我不断收到错误 404 Not Found:“http://myurl/database/%5Bobject%20Object%5D”。

看起来它正在尝试将数据发送到http://myurl/database/%5Bobject%20Object%5D而不是我定义的 PHP 脚本。真的不知所措……我认为将绝对 URL 放入其中会起作用。

下面是我的代码。将永远感激任何帮助....

<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>
4

5 回答 5

19

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

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

另一个问题是你&amp;用来分隔参数;这应该只在 HTML 中完成,在这里你应该只使用&. (或数据对象,正如埃文所说,那样你就不需要考虑编码问题。)和.val().attr('value')不一样;第一个是字段的当前值,第二个是加载页面时的任何值。

最简单的正确方法是:

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

这假定三个字段具有相同的和name$ .serialize用于参数名称。idname

于 2012-04-28T11:56:10.880 回答
9

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

所以应该是:

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

或者,使用 $.post

$.post("http://myURL/database/InsertData.php", "dataid="+ dataid+"&amp;industry="+ industry +"&amp;geolocation="+ geolocation);

请记住,文档几乎总是很有帮助

于 2012-04-27T20:42:05.677 回答
1

尝试在对象中发送您的数据,例如:

data: {
    dataid : dataid,
    industry : industry,
    geolocation : geolocation
}
于 2012-04-27T20:37:05.887 回答
1

It seems to be a jquery bug. jQuery.post is a shorthand of jQuery.ajax({method:"post"});, so I changed my code to this, and it worked for me. Hope they will correct this issue.

Note, the issue still exists in 1.10.2 and 2.0.2 versions.

于 2013-07-18T11:20:18.907 回答
1

Evan 是对的,尝试将您的数据发送到一个对象,jquery 将负责正确地对值进行 URL 编码。字符串连接在 js 中可能会出现问题。

于 2012-04-27T20:55:41.457 回答