mmsgold
22.04.2014 - 22:30
Здравствуйте, не могу никак найти нормальный пример по jsonp jquery... как просто работать с json это понятно, а вот как еще прикручивается функция обратного вызова
sergeiss
22.04.2014 - 23:18
"Функция обратного вызова" - это ты про аякс?
_____________
*
Хэлп по PHP*
Описалово по JavaScript *
Хэлп и СУБД для PostgreSQL*
Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги. *
"накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)
mmsgold
22.04.2014 - 23:45
sergeiss, да
mmsgold
23.04.2014 - 00:06
sergeiss, никак не въеду как работает эта функция обратного вызова, я иммею ввиду jquery,,, ее надо прописывать, или этот калбек только идентификатор дает,,,и в ответе от сервера он должен быть
AllesKlar
23.04.2014 - 00:11
mmsgoldЧто именно не понятно?
Функция обратного вызова может указываься вручную, либо, если ты не указал ее явно, то она прикрутится автоматом.
js$.ajax({
type: "get",
url: 'http://www.site.com/script.php',
dataType: "jsonp",
error: function ()
{
console.log('Error Ajax');
},
success: function(data)
{
console.log(data);
},
complete: function()
{
console.log('Complet Ajax');
}
});
http://www.site.com/script.php$data = array('bla', 'bla', 'bla');
header('Content-Type: application/javascript');
echo (isset($_GET['callback']) ? $_GET['callback'] : '').'(' . json_encode($data) . ')';
Важно! при отправке из скрипта-обработчика отсылаеть хеадер
Content-Type: application/javascript, т.к. jsonp - это не json, а чистый JavaScript код.
_____________
[продано копирайтерам]
mmsgold
25.04.2014 - 11:52
Цитата |
Важно! при отправке из скрипта-обработчика отсылаеть хеадер Content-Type: application/javascript, т.к. jsonp - это не json, а чистый JavaScript код. |
Интересно,,а в документации не слова, разве
dataType: "jsonp" не хватит для этого?
echo (isset($_GET['callback']) ? $_GET['callback'] : '').'(' . json_encode($data) . ')';
и зачем здесь в случае ложь выводится пустая строка... не вижу смысла...и самое главное, а где callback ?... функция обратного вызова?
AllesKlar
25.04.2014 - 13:12
mmsgold
Цитата |
разве dataType: "jsonp" не хватит для этого? |
dataType: "jsonp" - Это ты указываешь в javascript файле в каком виде отправлять данные.
Content-Type: application/javascript - это mime-type ответа php скрипта. Т.е. в каком виде скрипт должен ответить.
Это физически два разных файла. Яваскрипт спросил, php ответил. Они должны "разговаривать" на понятном друг-другу языке.
Цитата |
и зачем здесь в случае ложь выводится пустая строка. |
php скрипт должен коректно отработать в любом случае. Хоть война!
Если ему не будет передан параметр $_GET['callback'], то без этого условия он вывалит тебе Warnung, а оно нам не нужно. Обработка ошибок, так сказать.
Цитата |
.и самое главное, а где callback ?... функция обратного вызова? |
jQuery автоматом подставляет идентификатор этой функции в url вызова. Это будет идентификатор функции success.
Посмотри в консоли, какой url вызывается.
Явно нужно указывать колбак фукцию только в том случае, если ты ответ хочешь ловить не в success, а в другой функции.
_____________
[продано копирайтерам]
mmsgold
25.04.2014 - 13:39
Цитата |
dataType: "jsonp" - Это ты указываешь в javascript файле в каком виде отправлять данные. Content-Type: application/javascript - это mime-type ответа php скрипта. Т.е. в каком виде скрипт должен ответить. Это физически два разных файла. Яваскрипт спросил, php ответил. Они должны "разговаривать" на понятном друг-другу языке. |
не согласен,,, сделал пример, отправил данные скрипту джейсоном, ответил текстом,,, ответ не прошел,,, когда отправлял тектом,,, ответ проходил... я так понимаю браузер ожидает ответа именно в том типе в котором мы указываем dataType: "jsonp"
mmsgold
25.04.2014 - 13:42
Цитата |
Явно нужно указывать колбак фукцию только в том случае, если ты ответ хочешь ловить не в success, а в другой функции. |
вот бы увидеть пример и пояснение,,,) вот это как раз для меня как то туманно,,,и вообще этот вопрос заслуживает отдельного семинара я думаю...
AllesKlar
25.04.2014 - 13:43
mmsgold
нуу... мало ли, с чем ты не согласен :) Разработчикам javascript и php это фиолетово :) ссори :)
Пример показывай, чего о порожнем рассуждать.
Цитата |
вот бы увидеть пример и пояснение,,,) вот это как раз для меня как то туманно,,,и вообще этот вопрос заслуживает отдельного семинара я думаю... |
$.ajax({
url: 'http://www.domain.com/script.php?callback=?',
type: "GET",
dataType: "jsonp",
jsonpCallback: "localJsonpCallback"
});
function localJsonpCallback(json) {
console.log(json);
}
_____________
[продано копирайтерам]
mmsgold
25.04.2014 - 20:26
jsonpCallback: "localJsonpCallback"
занчит так мы называем функцию обработки куда передадутся json данные,..
обязательно в таком случае это прописывать
callback=?'
,,, я так понимаю что наверное да,...
ну и сама функция конечно далее...
function localJsonpCallback(json) {
console.log(json);
}
...
идентификатор так же надо будет возвращать?,,, и именно гетом там его выводить? постом не работает?
mmsgold
25.04.2014 - 20:28
AllesKlar, а вот примеры
index.php
<?php
header("Content-Type: text/html; charset=utf-8");
header('Cache-Control: no-store, no-cache, must-revalidate, max-age=0');
?>
<html>
<head>
<title></title>
<!-- здесь мы подключаем jquery -->
<script src="../jq/jquery-2.1.0.min.js"></script>
<!-- здесь наша функция -->
<script type="text/javascript">
function runajax()
{
if($("#e-mail").val() == "" || $("#textarea").val() == "")
{
$("p").append("<strong>Данные в поля не введены!</strong>");
}
else
{
var mail = $("#e-mail").val();
var textarea = $("#textarea").val();
$.ajax({
dataType:"json",
type:"POST",
data: "mail="+mail+"&textarea="+textarea,
url: "http://ajax.ru/1text/ajax.php",
success: function(data,status){
alert(data);
alert(status);
}
})
}
}
$(document).ready(function(){
$("#button").click(runajax);
})
</script>
</head>
<body>
<p></p>
<!-- html форма -->
<div>
<div>
<label for="name"><strong>Ваше e-mail:</strong></label>
<input type="text" name="e-mail" id="e-mail" class="" placeholder="введите ваш e-mail" />
</div>
<div>
<label for="phone"><strong>Ваш вопрос:</strong></label>
<textarea rows="10" cols="45" id="textarea"></textarea>
</div>
</br>
<input type="button" value="Отправить" id="button" class="submit" />
</div>
</body>
</html>
и ajax.php
<?php
header("Content-Type: text/html; charset=utf-8");
header('Cache-Control: no-store, no-cache, must-revalidate, max-age=0');
$mail = $_POST['mail'];
$textarea = $_POST['textarea'];
echo "Привет, Мир!!!";
Быстрый ответ:
Powered by dgreen
Здесь расположена полная версия этой страницы.