AJAX不会POST到URL

时间:2009-11-13 12:14:43

标签: javascript html xml ajax

我正在尝试构建一个简单的AJAX脚本,该脚本使用表单将参数发送到Tumblr API。

这是当前的代码:

<body>
<script type="text/javascript">
function ajaxFunction()
{
var email = document.getElementById("email").value;
var password = document.getElementById("password").value;
var title = document.getElementById("title").value;
var body = document.getElementById("body").value;
var str = "&email=" + email + "&password=" + password + "&title=" + title + "&body=" + body;
//document.write(str);
var xmlhttp;
if (window.XMLHttpRequest)
{
// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{
// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if(xmlhttp.readyState==4)
{
document.getElementById("suc").value.innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("POST","http://www.tumblr.com/api/write?generator=TumblWave&type=regular",true);
xmlhttp.send(str);
}
</script>
<form id="myForm">
Name: <input type="text" id="email" />
Password: <input type="password" id="password" />
Title: <input type="text" id="title" />
Body: <input type="text" id="body" />
<input type="submit" onclick="ajaxFunction();" />
<div id="suc"></div>
</form>
</body>
</html> 

抱歉这个烂摊子。

不知何故,XMLHttpRequest似乎没有通过,因为没有任何东西进入Tumblr。但是,当我删除“document.write(str)”的注释时,似乎所有内容都是从表单中获取的,并使用正确的命令进行打印。

您可能会注意到xmlhttp.open上的URL我已经包含了两个静态参数:生成器名称和应该发送到Tumblr API的帖子类型。

我在w3schools.com上的模型之后做了这个,只做了很少的修改。任何帮助表示赞赏:)

4 个答案:

答案 0 :(得分:4)

您不能使用xmlhttprequest发布到其他网站,只能访问您正在查看的网页所在的网址。

另见Cross-site XMLHttpRequest

答案 1 :(得分:1)

xmlhttprequest通常不支持跨域请求。

您可能希望将PHP cURL用于某些类似的任务

所以你得到你的ajax写入

的php文件

然后将你的cURL帖子运行到tumblr.com资源

答案 2 :(得分:1)

XMLHttpRequest域限制的解决方法是在您的域中创建一个代理页面,该页面将接收请求并为您拨打远程调用。

例如,如果您使用的是ASP.NET,则xmlhttp对象可以在您的站点上调用AjaxProxy.aspx,该页面可以使用WebClient对象将数据发布到tumblr.com。

答案 3 :(得分:0)

如果要将参数附加到URL,为什么使用“POST”?你可以改用“GET”。