我正在尝试编写一个脚本,将我的所有提要项目标记为在 Google Reader 中已读。它应该像将 4 个变量发布到 API 链接一样简单。但是,我可以成功向 Google 发送 HTTP POST 而不会返回 400 错误的唯一方法是一个简单的 HTML FORM POST,如下所示。我尝试过 PHP cURL,但我从 Google 收到 400 错误,说明我提出了错误的客户端请求。
<form method="post" action="http://www.google.com/reader/api/0/mark-all-as-read">
<input type="hidden" name="s" value="user/10408189040522127442/state/com.google/reading-list" />
<input type="hidden" name="t" value="Your reading list" />
<input type="hidden" name="ts" value="<?php echo time(); ?>" />
<input type="hidden" name="T" value="<?php session_start(); echo $_SESSION['token']; ?>" />
<input type="button" value="Mark All As Read" /></form>
使用 HTML FORM 提交相同的详细信息(就像我尝试使用 cURL 一样)可以正常工作,成功地将所有项目标记为已读,但由于 FORM ACTION 设置为外部站点,因此您在提交时会被重定向到它。为了解决这个问题,我尝试使用以下内容进行 AJAX FORM 提交,因此没有重定向,但这不起作用并且没有提交任何内容。
$(document).ready(function(){
$("input[type=button]").click(function() {
$.post($('form').attr("action"), $('form').formSerialize());
});
});
任何人都可以建议吗?1) 为什么 cURL POST 不起作用而简单的 HTML FORM POST 起作用?2) 为什么我不能(默默地)通过 AJAX 提交来提交 HTML FORM?