Я читал во многих местах, что добавление &callback=?
к URL в $ .getJSON позволит междоменную выборку JSON. (например, см .: http://www.ibm.com/developerworks/library/wa-aj-jsonp1/)
Но это просто не работает для меня.
Вот моя форма:
<form id="commentForm_pub4101" class="commentForm" action="/SubmitComment" method="POST">
<h3>Your comment:</h3>
<div class="commentFormTopData commentFormRow">
<label for="Commenter">your name</label>
<input class="commentFormCommenter" id="Commenter" name="Commenter" type="text" value="" />
<label for="Email">e-mail</label>
<input class="commentFormEmail" id="Email" name="Email" type="text" value="" />
</div>
<div class="commentFormBody commentFormRow">
<label for="Body">comment</label>
<textarea class="commentFormBody" cols="20" id="Body" name="Body" rows="2"></textarea>
</div>
</form>
Вот мой JQuery:
$('form[action$="SubmitComment"]').submit(function (event) {
event.preventDefault();
$.getJSON('http://localhost/Comments/index.asp?Title=TESTTitle&Commenter=TESTCommenter&Email=TESTemail&Body=TESTBody&PublicationId=TESTPublicationId&callback=?',
function (data2) {
alert(data2.Title);
}
);
});
Целевой URL-адрес - это классический ASP-сценарий (не спрашивайте, почему - это сложно), использующий библиотеку JSON_2.0.4.asp для возврата результата JSON. Я не думаю, что это связано с проблемой, потому что вот возвращенный результат прямого вызова браузера по URL:
{"Commenter":"TESTCommenter","Email":"TESTemail","Body":"TESTBody","PublicationId":"TESTPublicationId","Title":"TESTTitle"}
Но если вы настаиваете, вот код (это тест на данный момент):
<!--#include file="JSON_2.0.4.asp"-->
<%
Dim body: body = Request("")
Dim jsa: Set jsa = jsObject()
jsa("Commenter") = Request("Commenter")
jsa("Email") = Request("Email")
jsa("Body") = Request("Body")
jsa("PublicationId") = Request("PublicationId")
jsa("Title") = Request("Title")
jsa.Flush
%>
... Так что, когда я соберу весь этот тестовый код вместе ... нет любви. Нет окна с предупреждением «TESTTitle».
Что я делаю не так?