У меня есть строка, представляющая запрос sparql для отправки на сервер php. В этот запрос у меня есть часть, которая закодирована с помощью метода jquery encodedURIComponent.
Проблема в том, что если я печатаю строку со стороны php, я вижу, что закодированная часть строки поступает декодированной, и поэтому я получаю 500 Внутренняя ошибка сервера, вызванная следующей ошибкой, с В результате отправка запроса отклонена.
Это ошибка:
Fatal error: Uncaught exception 'EasyRdf_Exception' with message 'HTTP request for SPARQL query failed: Error 400: Encountered " "<" "< "" at line 2, column 948. Was expecting one of: <IRIref> ... <PNAME_NS> ... <PNAME_LN> ... <BLANK_NODE_LABEL> ... <VAR1> ... <VAR2> ... "true" ... "false" ... <INTEGER> ... <DECIMAL> ... <DOUBLE> ... <INTEGER_POSITIVE> ... <DECIMAL_POSITIVE> ... <DOUBLE_POSITIVE> ... <INTEGER_NEGATIVE> ... <DECIMAL_NEGATIVE> ... <DOUBLE_NEGATIVE> ... <STRING_LITERAL1> ... <STRING_LITERAL2> ... <STRING_LITERAL_LONG1> ... <STRING_LITERAL_LONG2> ... "(" ... <NIL> ... "}" ... "[" ... <ANON> ... Fuseki - version 2.0.0 (Build date: 2015-03-08T09:49:20+0000) ' in C:\xamp_workbench\xampp\htdocs\heisenberg\easyrdflib\EasyRdf\Sparql\Client.php:284 Stack trace: #0 C:\xamp_workbench\xampp\htdocs\heisenberg\easyrdflib\EasyRdf\Sparql\Client.php(174): EasyRdf_Sparql_Client->request('update', 'PREFIX oa: <htt... in C:\xamp_workbench\xampp\htdocs\heisenberg\easyrdflib\EasyRdf\Sparql\Client.php on line 284
это метод, который отправляет запрос в php
function sendQuery(jsonDaInviare) {
console.log(jsonDaInviare);
$.ajax({
//headers: {'Content-Type': 'contentType: "application/x-www-form-urlencoded;charset=UTF-8",'},
url: 'php/AutomaticScrape.php',
data: "annotazioniDoc="+jsonDaInviare,
type: 'POST',
success: function (result) {
arrayAnnotazioni = [];
json = "";
},
error: function (jqXHR, textStatus, errorThrown) {
alert("Errore nel mandare il json al server");
console.log(jqXHR);
console.log(textStatus);
console.log(errorThrown);
}
});
}
это метод php, который получает запрос из jquery
if(isset($_POST['annotazioniDoc'])){
// here I find that the encoded part of the string arrives decoded
echo $_POST['annotazioniDoc'];
// this is commented because the query returns me that error
// $jsonDaMandare = $GLOBALS['sparql']->update($json);
}
Чтобы быть более точным, это часть строки, которая закодирована:
<http://rivista-statistica.unibo.it/article/view/4601_cited_A.M.%20MATHAI%20…Linear%20Algebra%20and%20its%20Applications%20396%2C%20pp.%20317-328._ver1>
Поэтому вот как это возвращается из php:
<http://rivista-statistica.unibo.it/article/view/4601_cited_A.M. MATHAI (2005), A pathway to matrix - variate gamma and normal densities, Linear Algebra and its Applications 396, pp. 317-328._ver1>de here
РЕДАКТИРОВАТЬ
Я решил с этим:
$.post( "php/AutomaticScrape.php", { annotazioniDoc: jsonDaInviare }, function() {
// do stuff
})
Задача ещё не решена.
Других решений пока нет …