2015-06-30 2 views
0

Im использованием фреймворка, я хочу, чтобы вызвать функцию контроллера из JS-файла,Вызов функции контроллера из JS файла

Мой Аякса код в JS файл:

$.ajax({ 
    type: "POST", 
    url: "operator/checkDisabledDates", 
    data: { 
     id: 1 
    }, 
    success: function(data) { 
     alert('success'); 
    }, 
    error: function(data) { 
     alert("Fail"); 
    } 
}); 

где checkDisabledDates мой метод контроллера имя и operator - мое имя контроллера.

я получил неправильное формирование URL-адрес что-то подобное,

www.example.com/operator/agent/id/4/operator/checkDisabledDates 

мой Аякса URL просто добавляет в последней позиции существующего URL, я пробовал разные комбинации, как,

url: "/operator/checkDisabledDates" 
url: "../operator/checkDisabledDates" 
url: "../checkDisabledDates" 

ничего не получалось, но когда я использовал в синтаксисе ниже, он работал,

url: "../../checkDisabledDates" 

Есть ли в любом случае сделать это без точек жесткого кодирования (.) Вроде этого ???

+0

Что такое "checkDisabledDates"? это под агентом? (url =/agent/check ..) ниже корня? (URL =/проверка ...). Имея/или http: // будет делать это путь от корня, что-то еще относительное –

+0

его оператор-контроллер, т. Е. Оператор/checkDisabledDates –

+0

, используя приведенную выше информацию (../../check .. работал + оператор/checkdates дает неправильный URL-адрес), это «www.example.com/operator/agent/checkDisabledDates». Таким образом, изменение URL-адреса в исходном коде на «/ operator/agent/checkDisabledDates» должно привести к успешному вызову –

ответ

1

Я бы предложил не использовать относительный путь для вызова вашего контроллера. Попробуйте использовать свой домен в качестве контекста

var domainName = 'yourSite.com' 
url: domainName+"operator/checkDisabledDates" 
1

Я использую в моем проекте, и это работает для меня, пожалуйста, попробуйте это -

Определение глобальной переменной в JS файл, например. -

var url_path = document.location.origin+document.location.pathname; 

так что теперь вы можете использовать как этот

url: url_path+'?r=operator/checkDisabledDates'
или
url: url_path+'operator/checkDisabledDates'

0

Используйте это:

data = {}; 
data.r = 'operator/checkDisabledDates'; 
data.id = 1; 

$.ajax({ 
type: "POST", 
url: "index.php", 
data: data, 
success: function(data) { 
    alert('success'); 
}, 
error: function(data) { 
    alert("Fail"); 
} 

});

Всегда работает для меня.

Смежные вопросы