복붙노트

[JQUERY] PHP는 함수에 jQuery를 AJAX 요청을 만들기

JQUERY

PHP는 함수에 jQuery를 AJAX 요청을 만들기

해결법


  1. 1.AJAX 요청에 HTTP 요청에서 발생 (또는 PHP는 귀하의 경우 스크립트)를 제외한 모든 URL이 파일을 가리 키도록 서버에 의해 번역됩니다 대부분의 경우 URL (HTTP 요청을)이 아닌 파일을 호출 수신 된 응답 (서버에) 당신에게 달려 있습니다.

    AJAX 요청에 HTTP 요청에서 발생 (또는 PHP는 귀하의 경우 스크립트)를 제외한 모든 URL이 파일을 가리 키도록 서버에 의해 번역됩니다 대부분의 경우 URL (HTTP 요청을)이 아닌 파일을 호출 수신 된 응답 (서버에) 당신에게 달려 있습니다.

    특정의 PHP 함수에 URL의 매핑 많은 PHP 프레임 워크가있다, AJAX는 비동기 접근 방식의 URL 및 응답을받을 것입니다.

    사이드 URL은 특정 함수를 호출하고 응답을 다시 보내도록 서버를 트리거 할 수 있습니다. 그러나 같은 당신의 URL 년대와 서버 측 코드를 구성 할 수까지입니다.


  2. 2.나는 기술이 여기에 작동하는 방법의 근본적인 오해가있다 생각합니다.

    나는 기술이 여기에 작동하는 방법의 근본적인 오해가있다 생각합니다.

    AJAX (자바 스크립트), 플래시, 또는 클라이언트 양면 기술은 직접 PHP 함수 (또는 서버에서 실행중인 다른 언어를) 호출 할 수 없습니다. 이 주위뿐만 아니라 다른 방법으로가는 마찬가지입니다 (예 : PHP는 JS 함수를 호출 할 수 없습니다).

    클라이언트와 서버 코드는 다른 시스템에 상주, 그들은 HTTP 프로토콜 (또는 무엇을)을 통해 통신합니다. HTTP는 다음과 같이 거의 작동합니다 :

    클라이언트 (예 : 브라우저) 요청 전송 -> 서버 프로세스가 요청을하고 응답을 보냅니다 -> 클라이언트 얻고 표시 및 / 또는 응답을 처리

    당신은 메시지로 이러한 요청과 응답을 볼 수 있습니다. 메시지는 서버 측 언어를 직접 하나에 함수를 호출 할 수 있지만 그렇게하고 서버에서 의미있는 메시지를 다시 얻을 수 있도록 충분한 정보를 제출 할 수 있습니다.

    당신은가 처리하는 핸들러를 가지고 있고 그래서 같은 이러한 요청을 전달합니다 수 있도록 :

    // ajax_handler.php
    switch ($_POST['action']) {
        case 'post_comment':
            post_comment($_POST['content']);
            break;
        case '....':
            some_function();
            break;
        default:
            output_error('invalid request');
            break;
    }
    

    그럼 그냥 올바른 매개 변수이 중앙 처리기에 클라이언트 POST 요청을해야합니다. 그런 다음 핸들러는 기능은 서버 측에서 호출 할 것을 결정하고, 마침내는 클라이언트에 대한 응답 다시 보냅니다.

    (1) 기술적으로는 원격 프로 시저 호출 (RPC)이 있지만, 이러한 혼란을 얻을 수 있습니다.


  3. 3.당신이 AJAX와 함께 임의의 PHP 함수를 호출 할 수 있습니다 여부를 묻는 경우 대답은 (기술적 인 이유 이외에) 명백한 보안상의 이유로 더 * 없다. 당신은 여러 별도의 파일을 생성하지 않으려면 여러 가지가 주어진 무슨 매개 변수에 따라 수행하는 PHP 스크립트 (예를 들어, 하나의 기능을 수행) 할 수 있습니다.

    당신이 AJAX와 함께 임의의 PHP 함수를 호출 할 수 있습니다 여부를 묻는 경우 대답은 (기술적 인 이유 이외에) 명백한 보안상의 이유로 더 * 없다. 당신은 여러 별도의 파일을 생성하지 않으려면 여러 가지가 주어진 무슨 매개 변수에 따라 수행하는 PHP 스크립트 (예를 들어, 하나의 기능을 수행) 할 수 있습니다.

    * 클라이언트에서 오는 임의의 PHP 명령을 실행 할 스크립트를 만들 수 있지만, 매우, 매우, 매우 현명하지 못한 것입니다 있지만.


  4. 4.짧은 대답은 "아니오"그러나 진짜 대답은 당신이 가짜 수 있다는 것입니다. NullUserException의 대답은 좋다. 당신은 함수 이름과 매개 변수를 사용하는 서버를 만들 수 있습니다. 그런 다음 서버는 기능을 실행하고 값을 반환합니다.

    짧은 대답은 "아니오"그러나 진짜 대답은 당신이 가짜 수 있다는 것입니다. NullUserException의 대답은 좋다. 당신은 함수 이름과 매개 변수를 사용하는 서버를 만들 수 있습니다. 그런 다음 서버는 기능을 실행하고 값을 반환합니다.

    이 프로토콜라는 XML-RPC를 통해 잠시 뒤로를 시행 하였다. 일부 JS 기술을 사용 JSON-RPC라는 노력도 있었다.

    의는 JS에 대해 냉각 한 가지 일이이 같은 일을 할 수 있다는 것입니다 :

    var base64_decode = create_remote_call('base64_decode');
    
    function create_remote_call(name) {
      return function(x) { 
        jQuery.getJSON('url/server.php',
                       {func:name,arg:x},
                       function(d){return d;}); 
      } 
    }
    

    base64_decode에 대한 호출 ( 'sarefdsfsaes')는 아약스 요청을하고 값을 반환합니다.

    이 테스트되지 않았습니다 때문 코드는 아마 작동하지 않습니다,하지만 서버를 호출하고 값을 반환하는 함수를 생성하는 기능입니다. 하나 개 이상의 인수를 취급 더 많은 작업이 필요합니다.

    말했다 모든 ... 내 경험, 대신 일반 기능으로 위장의 모든 네트워크 통신을 명시 적으로 확인하는 것이 좋다.


  5. 5.당신은 당신이 자바 스크립트에서 직접 PHP 함수를 호출하고 값을 처리 할 수 ​​내 phery 라이브러리 http://phery-php-ajax.net처럼 다리를 사용하여 동일한 결과를 얻을 수 있습니다. 당신이 전화 DOM을 조작하거나 단지 PHP 측에서 jQuery를 사용할 수 있도록 AJAX는 DOM 요소에 바인딩됩니다. 예제는 다음과 같습니다

    당신은 당신이 자바 스크립트에서 직접 PHP 함수를 호출하고 값을 처리 할 수 ​​내 phery 라이브러리 http://phery-php-ajax.net처럼 다리를 사용하여 동일한 결과를 얻을 수 있습니다. 당신이 전화 DOM을 조작하거나 단지 PHP 측에서 jQuery를 사용할 수 있도록 AJAX는 DOM 요소에 바인딩됩니다. 예제는 다음과 같습니다

    Phery::instance()->set(array(
      'phpfunction' => function(){
         return PheryResponse::factory()->jquery('body')->addClass('whoops');
      }
    ))->process();
    

    상기 자바 스크립트 측 (또는 HTML)

    phery.remote('phpfunction');  
    

    https://stackoverflow.com/a/7016986/647380 존에서 카와카미 응답에 상응하는, phery을 사용하는 것입니다 :

    function base64($data){
      return !empty($data['encode']) ? base64_encode($data['content']) : base64_decode($data['content']);
    }
    
    Phery::instance()->set(array(
      'base64' => 'base64'
    ))->process();
    
    function base64(content, decode, output){
      phery.remote('base64', {'content': content, 'encode': decode ? 1 : 0}, {'type':'text'}).done(output);
    }
    
    base64('asdf', false, function(data){
      console.log(data); // or assign to some variable
    });
    

    AJAX는 비동기 방금 AJAX 호출에서 값을 반환 할 수 없기 때문에, 당신은 콜백이 필요하지만,이 충분합니다.

  6. from https://stackoverflow.com/questions/7016701/creating-jquery-ajax-requests-to-a-php-function by cc-by-sa and MIT license