当尝试通过AJAX提交时,jquery – [object Object](404未找到)

前端之家收集整理的这篇文章主要介绍了当尝试通过AJAX提交时,jquery – [object Object](404未找到)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图通过ajax将变量传递给运行MySQL查询PHP脚本.但是,我继续收到错误404未找到:“http:// myurl / database / [object Object]”.

看起来它正在尝试将数据发送到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>
As andi表示,$.post希望URL字符串作为第一个参数;如果要传递选项对象,则必须使用 $.ajax.

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

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

这是正确的最简单的方法是:

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

这假设三个字段具有与@L_301_3@相同的名称和id,使用参数名称名称.

猜你在找的Ajax相关文章