2013-04-16 2 views
0

Я занимался некоторыми исследованиями по вызову функции PHP в файле из jQuery и, похоже, не нашел подходящего способа сделать это без его отказа от меня. Я пытаюсь создать промежуточную (вид) CMS с MVVM для создания одностраничного веб-сайта с базой WordPress.Использование jQuery для вызова функции PHP

На данный момент я застрял на немного, когда я пытаюсь получить доступ к PHP функции в выделенных файлов, я видел примеры here, here и here о том, как сделать это с помощью функции на файл, но я «Мне нравится иметь возможность вызвать функцию в файле, поскольку она дает мне более четкий обзор.

Я проверил ссылку и это правильно, файл PHP называется posts.php, а его местоположение определено в window.MODELS, однако функция fetch_all не выполняется.

JavaScript

//call php function 
var requestURL = window.MODELS + 'posts/fetch_all'; 

$.get(requestURL, function(data){ 
    console.log('checking data: ', data); 
}, 'json') 
    .done(function(passed){ 
     console.log('it worked!'); 
    }) 
    .fail(function(failed){ 
     console.log('it failed :('); 
    }); 

PHP

public function fetch_all(){ 
    return json_encode("this is fetch_all..."); //replace text to get all posts with get_posts() 
} 

Консоль показывает JavaScript сбой:.? "Он не :(" Как получить 'fetch_all' должны быть выполнены и возвращать данные

+0

Что происходит, когда вы получаете доступ 'сообщений/fetch_all' в вашем браузере? –

+0

Я получаю код состояния: 200 OK взамен, нет данных, хотя – Nukeface

+0

Тот же результат :(попробовал это сейчас, так как я еще не думал об этом еще – Nukeface

ответ

3

URL-адрес, который вы вызываете из jQuery , должен соответствовать местоположению файла .php на вашем сервере, например, правильный URL-адрес для вызова:

var requestURL = window.MODELS + 'posts.php?action=fetch_all'; 

Затем в вашем файле PHP вы должны выбрать, какую функцию вызывать в соответствии с параметрами запроса. Вы можете добавить этот код после объявления функции, чтобы вызвать правильную функцию в зависимости от «действия» параметра запроса:

if ($_REQUEST['action'] == 'fetch_all') 
    echo fetch_all(); 
else 
    echo json_encode(array('status' => 'error')); 

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

Надеется, что это помогает, А.

+0

Хорошо, что сделал трюк! :) Очень большое спасибо, потому что это заставило меня зайти в чашу! Не могу принять ответ еще (вы были слишком быстры;)), но через минуту! Хотя не должен 'else' быть' echo json_encode'? – Nukeface

+0

Правильно, отредактировал мой ответ, спасибо за то, что он указал и рад помочь! – santamanno

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