Фон: У меня есть HTML-файл, содержащий JavaScript. Этот файл размещен на сервере. В том же каталоге есть файл PHP. Имейте это в виду.запрос ajax не удается связаться с php
Пользователь выбирает некоторые параметры, и сайт генерирует строку XML на основе этих параметров. Затем я хочу передать эту строку XML в файл PHP для создания XML-файла и выполнить команду, относящуюся к этому файлу на этом сервере.
Проблема: При получении запроса AJAX GET появляется ошибка 400 (неправильный запрос). Зачем? Это потому, что файлы находятся в одном каталоге?
JS AJAX:
$.ajax({
type: "GET",
url: 'Submit_Job_to__Computer_Cluster.php',
data: {XML_requested_job : XML_string},
dataType: "json",
success: function (msg) {
console.log(msg);
},
error: function (errormessage) {
console.log("error: " + errormessage);
}
});
PHP:
<?php
header("Access-Control-Allow-Origin: *");
$today = getdate();
$year = (string) $today['year'];
$month = (string) $today['month'];
$day = (string) $today['mday'];
$XML_string = $_GET["XML_requested_job"]; //here's where the query data comes into play
$db_path = " /tmp/";
$db_path .= $year;
$db_path .= $month;
$db_path .= $day;
$db_path .= ".db";
$rocoto_path = "/work/apps/gnu_4.8.5/rocoto/1.2.1/bin/rocotorun";
$XML_file= "workflowPROD.xml";
$file_handle = fopen($XML_file, 'w') or die("Can't open the file");
fwrite($file_handle, $XML_string);
fclose($file_handle);
//concatenate command
$exec_command = $rocoto_path;
$exec_command .= " -w ";
$exec_command .= $XML_file;
$exec_command .= " -d";
$exec_command .= $db_path;
echo json_encode($XML_string);
shell_exec($exec_command);?>
EDIT: Изменение типа для POST кидает 501 не реализовано ошибку вместо этого.
Избегайте отправки слишком большого количества данных с помощью запроса GET. Вместо этого используйте POST. – Ibrahim
Почему ваш текст на стороне клиента text/html? вы не отправляете текст/html. Почему для CrossDomain установлено значение true? –
'crossDomain: true,' - Это только различие, если вы делаете запрос к ** тому же происхождению **, который будет ** перенаправлен ** на другой. Это очень редкая вещь, которая почти наверняка раздувается. – Quentin