我正在尝试通过 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+"&industry="+ industry +"&geolocation="+ geolocation,
});
return false;
};
</script>
最佳答案
正如安迪所说,$.post需要一个 URL 字符串作为第一个参数;如果你想传递一个选项对象,你必须使用 $.ajax .
当您尝试调用$.post(<option object>)
时,选项对象用作URL;在这个过程中,它被转换为字符串(并且转换为字符串的对象在 Javascript 中变为 [object <type>]
;在本例中为 [object Object]
),它得到 URL 编码( %5Bobject%20Object%5D
),并且,因为它确实如此不以 /
开头或协议(protocol)名称,它被解释为相对 URL,并以当前协议(protocol)、域和路径为前缀。然后,由于没有更多参数,因此将向该 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
参数名称。
关于jquery - 尝试通过 AJAX 提交时出现 %5Bobject%20Object%5D(未找到 404),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10357445/