首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用jquery调用$.ajax函数

使用jquery调用$.ajax函数
EN

Stack Overflow用户
提问于 2010-02-16 06:15:58
回答 5查看 402.2K关注 0票数 119

这可能是一个简单的答案,但我使用jQuery的$.ajax来调用PHP脚本。我想要做的基本上是将PHP脚本放在一个函数中,然后从javascript中调用PHP函数。

代码语言:javascript
复制
<?php 
if(isset($_POST['something'] {
    //do something
}
?>

到这个

代码语言:javascript
复制
<?php
function test() {
    if(isset($_POST['something'] {
         //do something. 
    }
}
?>

我该如何在javascript中调用该函数?现在,我只使用$.ajax和列出的PHP文件。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2010-02-16 06:30:54

使用$.ajax调用服务器上下文(或URL等)来调用特定的“操作”。你想要的是这样的:

代码语言:javascript
复制
$.ajax({ url: '/my/site',
         data: {action: 'test'},
         type: 'post',
         success: function(output) {
                      alert(output);
                  }
});

在服务器端,应该读取action POST参数,并且相应的值应该指向要调用的方法,例如:

代码语言:javascript
复制
if(isset($_POST['action']) && !empty($_POST['action'])) {
    $action = $_POST['action'];
    switch($action) {
        case 'test' : test();break;
        case 'blah' : blah();break;
        // ...etc...
    }
}

我相信这是Command pattern的一个简单的化身。

票数 230
EN

Stack Overflow用户

发布于 2013-01-08 23:32:22

我开发了一个jQuery插件,它允许您调用任何核心函数,甚至用户定义的函数作为插件的方法:jquery.php

在我们的文档头部包含jquery和jquery.php,并将request_handler.php放在服务器上之后,我们将开始以下面描述的方式使用插件。

为了便于使用,以一种简单的方式引用函数:

代码语言:javascript
复制
    var P = $.fn.php;

然后初始化插件:

代码语言:javascript
复制
P('init', 
{
    // The path to our function request handler is absolutely required
    'path': 'http://www.YourDomain.com/jqueryphp/request_handler.php',

    // Synchronous requests are required for method chaining functionality
    'async': false,

    // List any user defined functions in the manner prescribed here
            // There must be user defined functions with these same names in your PHP
    'userFunctions': {

        languageFunctions: 'someFunc1 someFunc2'
    }
});             

下面是一些使用场景:

代码语言:javascript
复制
// Suspend callback mode so we don't work with the DOM
P.callback(false);

// Both .end() and .data return data to variables
var strLenA = P.strlen('some string').end();
var strLenB = P.strlen('another string').end();
var totalStrLen = strLenA + strLenB;
console.log( totalStrLen ); // 25

// .data Returns data in an array
var data1 = P.crypt("Some Crypt String").data();
console.log( data1 ); // ["$1$Tk1b01rk$shTKSqDslatUSRV3WdlnI/"]

演示PHP函数链接:

代码语言:javascript
复制
var data1 = P.strtoupper("u,p,p,e,r,c,a,s,e").strstr([], "C,A,S,E").explode(",", [], 2).data();
var data2 = P.strtoupper("u,p,p,e,r,c,a,s,e").strstr([], "C,A,S,E").explode(",", [], 2).end();
console.log( data1, data2 );

演示发送PHP伪代码的JSON块:

代码语言:javascript
复制
var data1 = 
        P.block({
    $str: "Let's use PHP's file_get_contents()!",
    $opts: 
    [
        {
            http: {
                method: "GET",
                header: "Accept-language: en\r\n" +
                        "Cookie: foo=bar\r\n"
            }
        }
    ],
    $context: 
    {
        stream_context_create: ['$opts']
    },
    $contents: 
    {
        file_get_contents: ['http://www.github.com/', false, '$context']
    },
    $html: 
    {
        htmlentities: ['$contents']
    }
}).data();
    console.log( data1 );

后端配置提供了白名单,您可以限制可以调用哪些函数。该插件还描述了一些使用PHP的其他模式。

票数 12
EN

Stack Overflow用户

发布于 2010-02-16 06:37:56

你不能用Javascript调用PHP函数,就像你不能在加载页面时调用任意的PHP函数一样(只需考虑安全问题)。

如果出于某种原因需要将代码包装在函数中,为什么不将函数调用放在函数定义下,例如:

代码语言:javascript
复制
function test() {
    // function code
}

test();

或者,使用PHP包含:

代码语言:javascript
复制
include 'functions.php'; // functions.php has the test function
test();
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2269307

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档