У меня есть простая форма с полем выбора клиентов. Как только вы выбираете клиента, я звоню ajax, чтобы выбрать клиентов go и отобразить их под полем выбора, чтобы пользователь мог их увидеть. Это отлично работает. Запрос AJAX выглядит следующим образом:
$.ajax({
url: '/clients/access_controls/<?php echo basename(__FILE__);?>',
type: 'post',
data: clientId,
//dataType: 'application/json',
//contentType: 'application/x-www-form-urlencoded',
error: function(jqXhr, textStatus, errorMessage) {
alert('ERROR MESSAGE: ' + errorMessage);
return false;
},
success: function(d) {
$(d.html).insertAfter(tab.find('table tr:eq(0)'));
var func = d.responseScript;
if ($.isFunction(eval(func))) {
eval(func + '()');
}
}
});
Проблема в том, что после выбора другого клиента из списка вызов Ajax возвращает ошибку 403 FORBIDDEN. В чем может быть проблема? Что сбивает с толку, так это то, что первый звонок проходит нормально, так почему же он не работает во второй раз. Это очень простая проблема, но я не смог ее исправить. Я попытался установить различные типы содержимого с помощью запроса, а также попытался установить заголовки «Access-Control» в файле PHP, обрабатывающем запрос следующим образом:
header('Content-type: application/json');
//header('Access-Control-Allow-Headers', 'api-key,content-type');
header('Access-Control-Allow-Origin: *');
header("Access-Control-Allow-Headers: X-API-KEY, Origin, X-Requested-With, Content-Type, Accept, Access-Control-Request-Method");
//header('content-type: application/x-www-form-urlencoded; charset=UTF-8');
, но безрезультатно. Любая помощь будет оценена. Заранее спасибо.
Вот php КОД
if (isset($_POST['request'])) {
if (isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
header('Content-type: application/json');
//header('Access-Control-Allow-Headers', 'api-key,content-type');
//header('Access-Control-Allow-Origin: *');
//header("Access-Control-Allow-Headers: X-API-KEY, Origin, X-Requested-With, Content-Type, Accept, Access-Control-Request-Method");
//header('content-type: application/x-www-form-urlencoded; charset=UTF-8');
}
switch ($_POST['request']) {
case 'logos':
if (!isset($_POST['sub'], $_POST['value'])) {
echo json_encode([
'error' => 'Invalid arguments'
]);
exit;
}
$logo = getClientLogo($_POST['value']);
$html = '<tr><td valign="top">Current Logo:</td><td valign="top" class="client_logo">' . ((!empty($logo)) ? $logo : '<strong>No Logo</strong>') . '</td></tr><tr><td>Upload new logo:</td><td><form method="post" enctype="multipart/form-data" target="member_image" action="/clients/access_controls/' . basename(__FILE__) . '"><input type="file" name="member_image" class="hidden" /><input type="button" value="Select File" data-usage="member_image" data-event="click" data-label="member_filename" /> <span class="member_filename">No file selected</span> <input type="submit" value="Upload & Save >" /><input type="hidden" name="request" value="image_upload" /><input type="hidden" name="value" value="' . $_POST['value'] . '" /><input type="hidden" name="iil_token" value="' . getCSRFToken() . '" /></form><input name="member_image" style="display: none;" /></td></tr>';
print json_encode([
'html' => $html,
'responseScript' => 'IIL.applyImageUploadRequirements'
]);
exit;