Jquery를 사용하여 인수가 있는 php 함수 호출
저는 php 파일을 가지고 있습니다.func.php여기서 많은 함수를 정의했습니다.
<? php
function func1($data){
return $data+1;
}
?>
전화하고 싶습니다.function func1아약스를 사용합니다. 도와주셔서 감사합니다.
AJAX 호출에서 직접 PHP 함수를 호출할 수는 없지만 다음과 같은 작업을 수행할 수 있습니다.
PHP:
<? php
function func1($data){
return $data+1;
}
if (isset($_POST['callFunc1'])) {
echo func1($_POST['callFunc1']);
}
?>
JS:
$.ajax({
url: 'myFunctions.php',
type: 'post',
data: { "callFunc1": "1"},
success: function(response) { alert(response); }
});
다음과 같이 jQuery를 사용하여 php 스크립트를 Ajax 요청을 통해 호출해야 합니다.
Javascript:
$.ajax({
url: "script.php",
data: { param1: "value1", param2: "value2" },
type: "GET",
context: document.body
}).done(function() {
// your code goes here
});
Ajax 개체의 데이터 속성을 통해 매개 변수를 지정할 수 있습니다.
php
// you can do isset check before
$param1 = $_GET['param1'];
$param2 = $_GET['param2'];
// validate // sanitize // save to db // blah blah // do something with params
자세한 내용은 http://api.jquery.com/jQuery.ajax/ 에서 jQuery.ajax() 함수 설명을 참조하십시오.
조금 더 복잡하지만, 기본적인 것으로 줄여보겠습니다.
호출자와 스크립트 사이에 일종의 인터페이스(기본적으로 규약)가 필요합니다.여기서 주요 관심사는 두 가지입니다.
스크립트가 호출할 내용과 인수를 이해하는 방식입니다.예를 들어 다음을 사용하기로 결정했다고 가정합니다.
GET함수 호출 요청입니다.함수 이름은 다음과 같을 수 있습니다.func필드 및 인수args하나, 으로 구분된 문자열로서.;다시 말해서, 전화하는 것.funcFoo(5,'bar')요청하면 됩니다.func.php?func=func1&args=5;bar.호출자가 반환 값을 수신하고 이해하는 방식입니다.당신의 요구사항은 JS 지향적이기 때문에 JSON 접근법이 매우 적절할 수 있습니다.
기능과 함께 다음 코드를 추가합니다.
if(isset($_GET['func']))
{
$func=$_GET['func'];
if(function_exists($func))
{
$args=(isset($_GET['args'])?explode(';',$_GET['args']):array());
$result=call_user_func_array($func,$args);
}
else
$result=array('error'=>"Unknown Function $func!");
}
else
$result=array('error'=>"No function name provided!");
echo json_encode($result);
그러나 새로운 요구 사항을 충족하기 위해 기능도 변경해야 합니다.호출자가 얼마나 많은 인수를 제공할 것인지 알 수 있는 방법이 없기 때문에, 함수는 필수 인수를 수락하지 않고 제공된 인수 자체를 확인하도록 설계되어야 합니다.또한, 다음과 같이 하려면 항상 배열을 반환해야 합니다.json_encode발신자에게 반환되기 전에 d.
예를 들어, 예제 함수는 다음과 같이 표시되어야 합니다.
function func1(){
$data=func_get_args();
if(count($data)) // at least one -- rest will be ignored
return $data[0]+1;
else
return array('error'=>__FUNCTION__."() expects an argument!");
}
그러나 주의할 점은 다음과 같습니다.이것은 전체 개념을 시작하기 위한 뼈대일 뿐입니다.내결함성과 보안 모두에 대해 훨씬 더 많은 주의를 기울여야 합니다.하지만 그것은 다른 주제입니다.
네, 할 수 있어요!
여기 내 코드:
$.ajax({
type: "POST",
url: "ajax.php",
data: { kode: $(this).val(), func: 'my_func' },
success: function(response) {
//any success method here
}
});
그리고 여기서 호출할 함수를 수신하는 php의 코드.
$post = (object) $_POST;
if(!$post)
return false;
$func = $post->func;
return $func($post);
function my_func($post) {
$json['any_data'] = false;
if($post->kode == 'ND'){
$json['any_data'] = 'ND-'.date('Y');
}
echo json_encode($json);
}
그게 도움이 되길 바래, 형제... :D.
언급URL : https://stackoverflow.com/questions/19457612/call-php-function-with-arguments-using-jquery
'programing' 카테고리의 다른 글
| mariadb의 자동 타임스탬프에 대해 너무 멍청함 (0) | 2023.08.29 |
|---|---|
| 일반 CLR 스레드에 비해 IIS 스레드가 왜 그렇게 소중합니까? (0) | 2023.08.24 |
| 두 개의 인라인 블록, 폭 50% 요소가 두 번째 선으로 감깁니다. (0) | 2023.08.24 |
| Powershell: 프로세스 개체에 대한 표준 출력 및 오류 캡처 (0) | 2023.08.24 |
| haproxy를 통한 Galera 연결 문제 (0) | 2023.08.24 |