#php #javascript #jquery
#php #javascript #jquery
Вопрос:
Хорошо, итак, пытаемся собрать страницу, которая должна подключиться к нашей базе данных SQL. Итак, на странице javascript у меня есть функции, которые автоматически заполняют текстовое поле данными из нашей базы данных mysql, а затем мне нужно отправить это другим функциям и классам, чтобы они затем просматривали нашу базу данных SQL и возвращали некоторые данные. Проблема, с которой я сталкиваюсь, заключается в попытке получить .ПОЛУЧИТЬ вызов для вызова на странице php с функцией, которая вызывает класс, в который мне нужно попасть для вызова SQL. У меня это несколько настроено, но я пытаюсь выяснить, как отправлять данные с его помощью, а также просто получить разъяснения о том, как работать .ПОЛУЧИТЬ функцию.
Страница Javascript:
$.get("dsl_validate.php", calldsl(job));
Страница Php
function calldsl($job){
var $dsljob = $job
hasfunctioncode($dsljob);
}
Функция hasfunctioncode находится на моей странице класса DSL, которая вернет нужную мне информацию. Любая помощь в том, нахожусь ли я в правильном направлении или нет?
Ответ №1:
Похоже, вы пытаетесь физически вызвать функцию PHP calldsl()
из JavaScript. Это … неправильно. (Я предполагаю, что $.get()
вы используете jQuery, пожалуйста, поправьте меня, если это предположение неверно.)
То, что $.get()
делает, это просто вызывает ресурс на веб-сервере. У него нет никаких знаний о коде на стороне сервера (и не должно быть, по ряду причин). С точки зрения серверного кода, нет никакой разницы между страницей, вызываемой через $.get()
, и той, которая просто загружается в веб-браузер.
Что вам, по сути, нужно сделать, так это создать страницу PHP, которая принимает аргументы либо в виде записи формы, либо в виде строки запроса (если вы используете $.get()
, то строка запроса — это правильный путь), выполняет логику на стороне сервера, а затем просто выводит результаты на «страницу». В случае вызова страницы через AJAX, как вы здесь, хорошей идеей будет отобразить содержимое страницы, используя нотацию JSON. (Не забудьте также установить для заголовка content-type значение «application / json».)
Тогда то, что вы получаете на стороне клиента от $.get()
вызова, — это тело ответа, которое будет представлять собой данные JSON. На самом деле это просто «страница», как и любая другая, единственное отличие заключается в типе содержимого, сообщающем браузеру, что это данные JSON и что в нем нет HTML, только объекты JavaScript. success
Обратный вызов при $.get()
вызове (функция, которую вы передаете или создаете в строке) получит эти данные ответа в качестве аргумента и сможет делать с ними то, что вам нужно.
Ответ №2:
Насколько я понимаю jQuery.get(), вторым аргументом является «обратный вызов» (http://api.jquery.com/jQuery.get /). Обратный вызов передаст результаты с вашего сервера, следовательно, должен быть функцией. В настоящее время ваш код фактически выполняет функцию «calldsl», куда вы должны передавать только ссылку, подобную этой…
Javascript:
$.get("dsl_validate.php", function(response){
alert("yay I haz ajax! " response)
});
PHP: «dsl_validate.php «
echo "this is some data from the server";
Ответ №3:
Нет, вы не в правильном направлении. Первый параметр метода get должен указывать полный URL страницы, а не только скрипт (это работает, если скрипт находится в том же каталоге, что и файл javascript). Файл .php должен возвращать какой-либо «полезный» для вас javascript (JSON, или HTML, или текст, или… неважно). Функция «calldsl» будет вызвана ПОСЛЕ того, как данные будут возвращены из вызова. Что-то вроде этого:
$.get('dsl_validate.php?value=somevalue', function(data) {
alert("Data returned from dsl_Validate: " data)
});
Ответ №4:
я думаю, вам лучше передать функцию в качестве параметра на вашу страницу php
$.get("dsl_validate.php?calldsl=" job, function(data) {
$response = $(data);// create a jquery object from the response
});
`
и в вашем php-файле создайте инструкцию switch, которая вызывает функцию на основе параметра
Ответ №5:
Ммм, я думаю, вы ошибаетесь, второй аргумент вашей функции get — это функция javascript, которая будет обрабатывать данные, возвращаемые «dsl_validate.php «. Я имею в виду, если эта страница возвращает «foo», задание будет содержать «foo».
Но, по моему опыту, лучше использовать плагин автозаполнения из Jquery UI