Сбой кодирования URL при использовании поиска Bing

У меня есть вопрос, я пытаюсь перенести переменную в мой PHP-скрипт, чтобы получить данные из Bing Search API.

Я использую следующий код AJAX:

var bingquery = 'bingquery=' + $('#query').val();
console.log(bingquery);

$.ajax({
method: "POST",
url: "hw8.php",
dataType: "json",
data: bingquery,
success: function(jsondata){
console.log('***Test for News Feeds***');
console.log(jsondata);
}
});

И мой PHP это:

if (isset($_POST["bingquery"])){
// Replace this value with your account key
$accountKey = '***myaccountkey***';

$WebSearchURL = 'https://api.datamarket.azure.com/Bing/Search/v1/' + 'News?$format=json&Query=';

$cred = sprintf('Authorization: Basic %s', base64_encode($accountKey . ":" . $accountKey) );

$context = stream_context_create(array(
'http' => array(
'header'  => $cred
)
));

$request = $WebSearchURL . urlencode( '\'' . $_POST["bingquery"] . '\'');

//if I hard code the request URL here, it does work.

$response = file_get_contents($request, 0, $context);

echo $response;

}

Интересно, что-то не так с моей кодировкой URL? Поскольку консоль сообщает, что file_get_contents (0% 27MYSYMBOL% 27) завершается ошибкой, MYSYMBOL — это строка, которую я хочу найти при поиске.

Спасибо большое за вашу помощь!

1

Решение

В кодировке нет ничего плохого, urlencode должен сделать входную строку безопасным, и это именно то, что он делает, \ имеет особое значение в URL и, следовательно, кодируется функцией.

ОБНОВИТЬ

Вы добавляете две строки в PHP . используется для объединения двух строк, внесите следующие изменения,

$WebSearchURL = 'https://api.datamarket.azure.com/Bing/Search/v1/News';

$request = $WebSearchURL .'?Query='.urlencode($_POST["bingquery"]).'&$format=json;
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]