当尝试通过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;
}

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

相关文章

JS原生Ajax操作(XMLHttpRequest) GET请求 POST请求 兼容性问题 利用iframe模拟ajax 实现表单提交的返回...
AJAX 每日更新前端基础,如果觉得不错,点个star吧 &#128515; https://github.com/WindrunnerMax/E...
踩坑Axios提交form表单几种格式 前后端分离的开发前后端, 前端使用的vue,后端的安全模块使用的SpringSe...
很早就听闻ajax的名声,但是却一直不知道怎么用,今天自己捣鼓了一下,竟然会用了,哈哈哈哈。 为了防止...
需要在服务器上进行哈 jquery的ajax方法: // jquery请求 $.ajax({ url: &quot;./server/slider.js...
Ajax函数封装ajax.js // Get / Post // 参数 get post // 是否异步 // 如何处理响应数据 // URL // var...