Fragster
@Fragster
помогло? отметь решением!

Не получается сделать ajax-запрос с помощью jquery к серверу на node.js, а просто get запрос — работает?

Пытаюсь сделать простейший сервер на node.js, ну и работать с ним. Покурил мануалы, написал такой текст:

серверный код
var http = require("http");<br>
var url = require("url");<br>
var sys = require("sys");<br>
<br>
function onRequest(request, response) {<br>
  var parsed = url.parse(request.url, true);<br>
  console.log("Request <" + parsed.pathname + "> received.");<br>
	<br>
	var key;<br>
	console.log("get:");<br>
	console.log(sys.inspect(parsed.query));<br>
<br>
	console.log("headers");<br>
	console.log(sys.inspect(request.headers));<br>
<br>
	response.writeHead(200, {'Content-Type': 'text/plain'});<br>
	response.write("Success!");<br>
	response.end();<br>
}<br>
<br>
http.createServer(onRequest).listen(8888);<br>
<br>
console.log("Server has started.");


Если просто открыть localhost:8888 — то все работает, в консоль выводятся заголовки, в браузере появляется success.



А вот пытаюсь получить то же самое через ajax с помощью node.js — выдает ошибку. Код формы:

содержимое html
<?xml version="1.0" encoding="utf-8"?><br>
<!DOCTYPE html><br>
<html xmlns="http://www.w3.org/1999/xhtml"><br>
	<head><br>
		<title>Title</title><br>
		<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"/><br>
		<script type="text/javascript"><br>
<br>
			$(document).ready(function () {<br>
				$("div").text("Ready!");<br>
			});<br>
<br>
			function submitForm(form) {<br>
				aj = $.get(<br>
					"http://localhost:8888",<br>
					{ nnn: form.nnn.value }<br>
				);<br>
				aj.done(function(data) {<br>
					$("pre").text(data);<br>
				});<br>
				aj.fail(function(errInfo) {<br>
					alert(errInfo.statusText);<br>
				});<br>
				return false;<br>
			}<br>
		</script><br>
	</head><br>
	<body><br>
		<form onsubmit="return submitForm(this)"><br>
			<input name="nnn" type="text"/> <input type="submit"/><br>
		</form><br>
		<div>Wait!</div><br>
		<pre>Result</pre><br>
	</body><br>
</html><br>




При этом в консоль выводится то, что запрос есть, его параметры, сервер не падает с ошибкой, продолжает принимать запросы.

В firebug вот что (8 байт, это и есть «Success!», как я понимаю. По крайней мере, если менять возвращаетмое сообщение, то соответственно меняется это число):

картинкаplasma-desktopry2248.png

Как заставить работать?
  • Вопрос задан
  • 7041 просмотр
Решения вопроса 1
dizballanze
@dizballanze
Software developer at Yandex
Скорее всего проблема в том, что node.js сервер висит на другом порту и соответственно нужно делать кросс-доменный ajax запрос (нужно добавить к запрашиваемому url get-параметр `callback=?`).
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
max_mara
@max_mara
Может ваш ajax надеется получить json, а получает html?
Ответ написан
Комментировать
kratkar
@kratkar
web-developer
А другие версии jquery пробовали?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы