【问题标题】:AJAX won't POST to URLAJAX 不会发布到 URL
【发布时间】:2010-12-16 06:40:55
【问题描述】:

我正在尝试构建一个简单的 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)”的 cmets 时,似乎所有内容都按照应有的方式从表单中获取并使用正确的命令进行打印。

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

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

【问题讨论】:

    标签: javascript html xml ajax


    【解决方案1】:

    您不能使用 xmlhttprequest 发布到不同的站点,您只能转到您正在查看的页面所在的相同 url。

    另见Cross-site XMLHttpRequest

    【讨论】:

      【解决方案2】:

      xmlhttprequest 通常不支持跨域请求。

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

      所以你让你的 ajax 写入到 php 文件中

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

      【讨论】:

        【解决方案3】:

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

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

        【讨论】:

          【解决方案4】:

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

          【讨论】:

          • Tumblr API 需要 POST(或者至少文档是这样说的)
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-01-19
          • 2023-04-10
          • 2017-09-22
          • 2016-06-26
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多