我正在尝试通过ajax将变量传递给将运行MySQL查询的PHP脚本。然而,我一直收到错误404没有找到:"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+"&industry="+ industry +"&geolocation="+ geolocation,
});
return false;
};
</script>
发布于 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请求。
另一个问题是,您使用&
来分隔参数;这应该只在HTML语言中完成,在这里您应该只使用&
。(或者像Evan所说的数据对象,这样您就不需要考虑编码问题了。).val()
和.attr('value')
是不同的;第一个是字段的当前值,第二个是加载页面时的值。
正确做到这一点的最简单方法是:
function insertData() {
var data = $('#dataid,#industry,#geolocation').serialize();
$.post('http://myURL/database/InsertData.php', data);
return false;
}
这假设这三个字段具有相同的name
和id
,因为$.serialize使用name
作为参数名称。
发布于 2012-04-28 04:42:06
您应该将$.post
更改为$.ajax
,或者将URL和数据作为参数传递。$.post只是$.ajax的简写,它将URL作为第一个参数。
所以它应该是:
$.ajax({
type: "POST",
url: "http://myURL/database/InsertData.php",
data: "dataid="+ dataid+"&industry="+ industry +"&geolocation="+ geolocation
});
或者,使用$.post
$.post("http://myURL/database/InsertData.php", "dataid="+ dataid+"&industry="+ industry +"&geolocation="+ geolocation);
请记住,这些文档几乎总是有用的
发布于 2012-04-28 04:37:06
尝试在对象中发送数据,如下所示:
data: {
dataid : dataid,
industry : industry,
geolocation : geolocation
}
https://stackoverflow.com/questions/10357445
复制相似问题