2009-03-20 4 views
0

Я пытаюсь сделать букмарклет, в котором будет отображаться URL-адрес текущей страницы, на которой вы находитесь, и отправить ее в приложение, написанное с помощью CodeIgniter.Asynch Page Call from Bookmarklet с CodeIgniter

Проблема, с которой я сталкиваюсь, заключается в том, что я не могу выполнить стандартный вызов AJAX, потому что это междоменный. Это запрещено, и я не могу понять, как использовать JSONP через метод $_GET, поскольку CodeIgniter сдувает параметр $_GET.

На этом этапе я буду принимать любые предложения о том, как это сделать. Обратите внимание, что мне нужно отправить URL-адрес, и если он должен быть передан через URL-адрес, он, очевидно, должен быть закодирован или что-то еще. Это я также не понял, как это сделать, поэтому любые указатели на этом конце будут оценены.

ответ

0

Codeigniter отключает $ _GET, но вы можете получить данные из строки запроса. Это немного неэффективно, так как PHP, вероятно, закончится разбор строки запроса в два раза, но это должно работать:

parse_str($_SERVER['QUERY_STRING'], $get); 
print_r($get); 

Все переменные GET должны быть в подъезде переменных $ ГЮТ. См. parse_str() documentation для получения дополнительной информации.


В качестве альтернативы вы можете URL-кодировать текущий URL-адрес и добавлять его к тому, что вы запрашиваете, например.

var url = 'http://example.com/bookmarklet/' 
       + encodeURIComponent(window.location); 

Тогда в Codeigniter сделать что-то вроде:

//you might have to call urldecode() on this value 
$url = $this->uri->segment(0); 

но вы можете обнаружить, то есть this problem

+0

Ummm ... Не могли бы вы немного прояснить ситуацию ... У меня нет КЛИЕНА, что это такое. –

0

Возможно, enable query strings in Codeigniter, но следите за предостережениями - например, вы не можете использовать URL-адрес.

+0

хороший вызов ... хотя, похоже, это потребовало бы мне сделать строки запроса для сайт WHOLE ... который я бы хотел избежать ... –