jquery - 尝试通过 AJAX 提交时出现 %5Bobject%20Object%5D(未找到 404)

标签 jquery ajax post

我正在尝试通过 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>

最佳答案

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

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

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

最简单的正确方法是:

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

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

关于jquery - 尝试通过 AJAX 提交时出现 %5Bobject%20Object%5D(未找到 404),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10357445/

相关文章:

javascript - 使用each()打印数组时jquery ajax()问题

php - 我的逻辑正确吗? Ajax 和/或 PHP 与 Mysql

ruby-on-rails - 我在哪里放置 "use Rack::Facebook::MethodFix"以使用 Rack fix 修复 Facebook Post Canvas 问题?

python - 如何在 python 中对 POST 方法进行单元测试?

php - 使用 jquery AJAX 将数据发送到 php 并检索响应

jQuery Mobile – 具有相对高度的内容网格

javascript - jQuery 无法获得良好格式的 Id

jQuery 事件触发问题

ajax - 拉维尔 4 : Responding to AJAX requests from controller

php - iOS;将图像从 UIImageView 发布到 PHP