Немного экспериментирую с API OMDb. Успеваю искать фильм, но не с пробелами. Как только я использую пробел в своем поиске, он возвращает ноль.
Examples:
Search: Hot Return: {movieName: "Hot Fuzz"}
Search: Fuzz Return: {movieName: "Fuzz"}
Search: Hot Fuzz Return: {movieName: "No results"}
Search: Poet's Return: {movieName: "Poet's Pub"}
Search: Poet's Pu Return: {movieName: "No results"}
Я предполагаю, что пробел как специальный символ неправильно отформатирован, и поэтому появляется строка возврата по умолчанию. Я не могу понять, как это решить. Может ли кто-нибудь указать мне правильное направление?
HTML / JS:
<form id = "fetchFilm" method = "post">
<input id = "searchString" type = "text" name = "searchString">
</form>
<br>
<p id = "mTitle"></p>
<script>
$(function() {
$('form').each(function(e) {
$(this).find('input').keypress(function(e) {
// Enter pressed?
if (e.which == 10 || e.which == 13) {
e.preventDefault();
findFilm();
}
});
});
});
function findFilm() {
$.ajax({
url: "movieFinder.php",
type: "post",
dataType: 'json',
data: $('#searchString'), //Here is where I presume the problem may be.
success: function(data){
var movieTitle = data.movieName;
document.getElementById("mTitle").innerHTML = movieTitle;
},
});
}
</script>
PHP:
<?php
if (isset($_POST)) {
function curl_get_contents($url) {
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
$data = curl_exec($ch);
curl_close($ch);
return $data;
}
$searchString = $_POST['searchString'];
$url = "https://www.omdbapi.com/?apikey=MyKey&t = ".$searchString;
$movie_json = json_decode(curl_get_contents($url), true);
$movie['movieName'] = $movie_json['Title'];
if (!empty($movie['movieName'])) {
//Do nothing
} else {
$movie['movieName'] = "No results";
}
echo
json_encode(array(
'movieName' => $movie['movieName']
))
;
}
?>



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


$('#searchString') дает вам элемент, завернутый в jquery, а не входное значение. Попробуйте вместо этого:
data: $('#searchString').val()
В зависимости от получаемого результата попробуйте URL-кодировку строки поиска при ее применении в качестве параметра запроса:
Это будет работать: https://www.omdbapi.com/?apikey= & t = Горячий% 20Fuzz
Спасибо. Думаю, я действительно думал, что это был ответ (но не знал, что нужно искать "кодировку URL"), но, очевидно, нуждался в подстановочном знаке *, добавленном в поисковый запрос