2016-08-15 4 views
1

У меня есть простой HTML-страницы, я открываю непосредственно, файл: //abc.htmlиспользованием JSONP с Ajax HTML

Она имеет следующий код

$.ajax({ 
     url: "http://localhost:8080/ajax_info.php", 
     dataType: "jsonp", 
     jsonp: 'jsoncallback', 
     success: function(data) { 
      alert(data); 
     } 
    }); 

ajax_info.php имеет эхо «привет» только в нем.

На каждой перезагрузите вкладку Network в хроме показывает, что запрос был сделан на

http://localhost:8080/ajax_info.php?jsoncallback=jQuery1111016803214247142373_1471278920224&_=1471278920236 

и привет, как будет получен ответ, но я не получаю окно предупреждения.

Когда я выполняю страницу, она ничего не показывает (без предупреждающего окна), я должен получать оповещение с приветствием в ней, я делаю что-то неправильно?

+0

_ «ajax_info.php имеет эхо„привет“только в этом.» _ - Это не так, как JSONP работает .. –

+0

@JasonP что это должно быть, я просто сделать PoC –

ответ

0

Попробуйте добавить эту функцию к вашему:

function jsoncallback(json){ 
alert(json); 
} 

EDIT: и когда вы хотите использовать JSONP сервер должен повторить Params в функции вы хотите:

сделать это на сервере

echo 'jsoncallback("hello!")'; 

или это:

echo 'jsoncallback('. json_encode($some_data) .')'; 

Конечно «jsoncallback» это имя функции пользователя, что любой пользователь может захотеть изменить, так что вы должны сделать это правильный путь:

echo $user_sent_me_this_name . '(' . json_encode($some_data) . ')'; 
+0

я пробовал, это говорит Uncaught ReferenceError: hello не определен –

+0

Я добавил объяснение, какой сервер должен делать. В основном сервер должен эха _working javascript_ –

+0

вам действительно нужен jsonP? это только для запросов ajax для перекрестных доменов. –

0
success: function(data) {alert(data);} 

Этот код прекрасно, убедитесь, что ваш Соединение Ajax работает. знать, что вы можете использовать параметр error:.

$.ajax({ 
     url: "http://localhost:8080/ajax_info.php", 
     dataType: "jsonp", 
     jsonp: 'jsoncallback', 
     success: function(data) { 
      alert(data); 
     }, 
     error: function() { 
      $('#info').html('<p>An error has occurred</p>'); 
      } 
    }); 
+0

На самом деле мне нужно отредактировать php в качестве первого упомянутого ответа, он должен вернуться, FUNCTIONNAME ('DATA_I_WANT_TO_RETURN); –

+0

Вы решили проблему? –