2009-11-13 2 views
1

Я пытаюсь создать простой скрипт AJAX, который использует форму для отправки параметров в API Tumblr.AJAX не отправляется по адресу

Это текущий код:

<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)», похоже, что все извлекается, как предполагается, из форм и печатается с помощью правильных команд.

Вы можете заметить на URL-адрес xmlhttp.open, что я уже включил два статических параметра: имя генератора и тип сообщения, которое должно быть отправлено в API Tumblr.

Я сделал это после модели на w3schools.com с небольшими изменениями. Любая помощь приветствуется :)

ответ

4

Вы не можете использовать xmlhttprequest для публикации на другой сайт, вы можете перейти только к тому же URL-адресу, на котором размещена страница, которую вы просматриваете.

Смотрите также Cross-site XMLHttpRequest

1

XMLHttpRequest обычно не поддерживает перекрестные запросы домена.

Вы можете использовать PHP Curl для некоторой задачи, как тот

так что вы получите ваш Аякса писать в PHP файл, который будет

затем запустить Curl пост в tumblr.com ресурс

1

Обходным путем для ограничения домена XMLHttpRequest является создание прокси-страницы в вашем домене, которая получит запрос и сделает для вас удаленный вызов.

Например, если вы использовали ASP.NET, ваш объект xmlhttp мог вызывать AjaxProxy.aspx на вашем сайте, и эта страница могла использовать объект WebClient для публикации данных на tumblr.com.

0

Почему вы используете «POST», если вы добавляете параметры в URL? Вместо этого вы можете использовать GET.

+0

API Tumblr требует POST (или, по крайней мере, документация говорит об этом) – bleakgadfly

Смежные вопросы