Это мое «однострочное» решение:
$.postJSON = function(url, data, func) { $.post(url+(url.indexOf("?") == -1 ? "?" : "&")+"callback=?", data, func, "json"); }
Чтобы использовать метод jsonp и POST, эта функция добавляет параметр GET «callback» в URL. Вот способ его использования:
$.postJSON("http://example.com/json.php",{ id : 287 }, function (data) {
console.log(data.name);
});
Сервер должен быть готов обработать параметр GET обратного вызова и вернуть строку json как:
jsonp000000 ({"name":"John", "age": 25});
, в которой "jsonp000000" - это значение GET обратного вызова.
В PHP реализация будет выглядеть так:
print_r($_GET['callback']."(".json_encode($myarr).");");
Я сделал несколько междоменных тестов, и это похоже на работу. Все еще нужно больше тестирования, хотя.