我试图通过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+"&industry="+ industry +"&geolocation="+ geolocation,}); return false; }; </script>
As andi表示,$.post希望URL字符串作为第一个参数;如果要传递选项对象,则必须使用
$.ajax.
当您尝试调用$.post(< option object>)时,该选项对象用作URL;在这个过程中,它被转换为一个字符串(并且转换为一个字符串的对象在Javascript中变为[object< type>];在这种情况下,[object Object]),它被URL编码([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,使用参数名称的名称.