2013-05-14 2 views
0

У меня возникли проблемы с получением кода php в моем приложении. Настройка довольно проста: 1 кнопка, 1 функция и 1 файл php.Выполнять php из javascript

The structure

script.js

$(document).ready(function() 
{ 
    $("#btnTestConnectie").click(testConnectie); 
}); 

function testConnectie() 
{ 
    $.get("script/SQL/testConnection.php"); 
} 

testConnection.php

<?php 
echo "It works!"; 
php?> 

Согласно этому сообщению, он должен работать (How do I run PHP code when a user clicks on a link?)

Некоторые источники утверждают, что это невозможно выполнить php через javascript, поэтому я не знаю, во что верить.

Если я ошибаюсь, может ли кто-нибудь указать мне на метод, который работает (для подключения из javascript/jQuery-скрипта к базе данных mySQL)?

Спасибо!

+4

PHP выполняется на стороне сервера, JS/JQuery выполняется на стороне клиента. Вы можете вызвать скрипт php с помощью ajax и выполнить js в соответствии с ответом. –

+0

Что в вашей функции 'testConnectie'? он должен содержать запрос ajax, как тот, который использует '$ .get' в указанной вами ссылке. – sgroves

+1

По этому сообщению? Вы не сделали ничего, что требуется для публикации, например, для ссылки на страницу PHP, например, –

ответ

1
$.get('script/SQL/testConnection.php', function(data) { 
    alert(data) 
}); 

Вы должны обработать Ajax результата

+2

На самом деле вам не нужно обрабатывать результат. Если это сработает, вы можете увидеть результат в консоли. –

+0

ему НЕ НУЖНО. но да, если вы хотите сделать что-то другое, кроме запуска php-скрипта, обработка результата ajax была бы хорошей идеей. – sgroves

0

Javascript выполняется в браузере (клиент) и PHP выполняется на удаленном сервере, так что вы не можете просто запустить код PHP от JS. Однако вы можете вызвать сервер, чтобы запустить его для вас, и вернуть результат без перезагрузки страницы. Такой подход называется AJAX - читал об этом некоторое время.

Я вижу, что вы используете jQuery - у этого есть довольно хороший API для таких вызовов. Документально: here

В вашем случае JS должен быть скорее нравится:

$(document).ready(function() 
{ 
    $("#btnTestConnectie").click($.ajax({ 
     url: '/testConnection.php', 
     success: function(data) { 
      //do something 
     } 
    })); 
}); 

[EDIT] Допустим, у вас есть простой скрипт на сервере, который обслуживает данные из базы данных на основе идентификатора, приведенной в GET (например, www.example.com/userInfo.php?id=1). В самом простом заходе сервер запускает скрипт userInfo.php и передает суперглобальный массив $ _GET с идентификатором ключа ($ _GET ['id'] = 1, если быть точным). При обычном вызове вы подготовили некоторый запрос, вынесите какой-то html и эхо его, чтобы браузер мог отображать новую страницу.

В вызове AJAX это почти то же самое: сервер получает вызов, запускает скрипт и возвращает его результат. Все дело в том, что браузер не перезагружает страницу, а передает этот ответ функции javascript и позволяет делать с ней все, что вам нужно. Обычно вы, скорее всего, отправляете только кодированные данные (я предпочитаю JSON) и выставляю правильные html на стороне клиента.

+0

Это выглядит полезно, но я не знаю, как начать. Есть ли у кого-нибудь фрагмент кода о том, как использовать Javascript + Ajax для подключения к базе данных MySQL (с именем пользователя/паролем) для выполнения инструкции SQL? – Matt

+0

Попытайтесь пройти через мое редактирование - должно быть проще, надеюсь. – Moby04

+3

делать вещи за один шаг. 1) узнайте, как подключиться к базе данных с помощью php, 2) научиться выполнять инструкцию sql по вашему соединению, 3) научиться использовать jQuery ajax-запрос для взаимодействия между js и php. как только вы сможете сделать эти 3 вещи, вы можете собрать их все вместе. – sgroves

0

Вам нужно что-то сделать с ответом на то, что ваш php-скрипт эхом.

$.get("script/SQL/testConnection.php", function(data){ 
    alert(data); 
}); 

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

+0

Вам не нужно обрабатывать результат, если все OP хочет сделать, это запустить скрипт на стороне сервера. Вы можете увидеть ответ в консоли браузера. –

+0

Вот что я сказал. –

0

Вы должны поместить все функции в документе готовый обработчик:

$(document).ready(function(){ 
    function testConnectie() { 
     $.get("script/SQL/testConnection.php"); 
    } 

    $("#btnTestConnectie").click(function(e) { 
     e.preventDefault(); 
     testConnectie(); 
    }); 
}); 

Вы должны иметь консоль браузера открытым, чтобы увидеть результат в качестве ответа от сервера. Убедитесь, что вы изменили закрывающий PHP-скобок на?> В testConnection.PHP.

Еще одно замечание: если вы тестируете функции AJAX, вы должны протестировать их на веб-сервере. В противном случае вы можете не получить никакого результата или результаты могут быть не такими, какие вы ожидаете.

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