2015-01-25 6 views
0

Я делаю следующее JQuery Ajax вызов функции CodeIgniter PHP:Невозможно передать строковый параметр для функции PHP с помощью AJAX

$.ajax({ 
         type:"POST", 
         url: "Ajax/getHtml", 
         data: { u : 'http://stackoverflow.com/' }, 
         contentType: "application/json; charset=utf-8", 
         dataType: 'html',  
         success: function(data) { 
          console.log(data); 

         }, 

         error: function(jqXHR, textStatus, errorThrown) { 
           console.log('error'); 
           console.log(jqXHR,textStatus, errorThrown); 
         } 
        }); 

Запрашиваемая функция РНР:

public function getHtml() { 
     var_dump($_POST); 
     $url = $_POST['u']; 
     $result = file_get_contents($url); 
     echo ($result); 
} 

var_dump ($ _POST):

array(0) { } 

Как это исправить?

+1

параметр contentType указывает запрос, какой тип данных вы отправляете на сервер, php по умолчанию не знает, как получать/обрабатывать json, вам нужно будет прочитать исходный ввод, чтобы получить его. Удалить параметр contentType –

+0

Вы пытались изменить тип контента? – TNC

+0

вам не нужно устанавливать тип содержимого, опустить эту часть, и она должна работать нормально – Ghost

ответ

1

Php не будет заполнять массив $ _POST, если тип содержимого запроса application/json; charset=utf-8, также вы не отправляете json. Просто удалите строку типа контента, и будет установлен нужный (по умолчанию) тип контента application/x-www-form-urlencoded.

+0

Спасибо, что вам многое изменилось! – user61629

Смежные вопросы