jquery ajax php 调用方法!

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jquery ajax php 调用方法!相关的知识,希望对你有一定的参考价值。

ajax 如何能调用php的方法?
比如java 整合struts后能用“!”来调用方法
请各位大哥大姐帮帮忙

可以在jquery的ajax方法成功执行之后,执行相应的js代码

例如:index.html 页面
<script language="javascript">
var id = 10;
$.ajax(
url:\'ajax.php?action=ok\',
type:\'post\',
data:\'id=\'+id,
async : false,
success: function(data)
//可以在这里执行相应的js代码
$("#user_id").val(data);

);
</script>
<input type="text" name="user" id="user_id" value="">
<input type="button" value="点击" onclick="check();">

ajax.php 处理页面

<?php
if($_GET[\'action\'] == \'ok\')
$id = $_POST[\'id\'];
echo $id;

?>
参考技术A

我大概明白你的意思了


是不是类似于spring mvc用url实现相关方法的调用哇,我以前在网上看到过有类似的php框架


我之前写过一个小程序,是模拟出来这种效果的,但是是以参数形式传过去的,你可以参考一下


js部分

$.ajax(
    url: 'index.php',
    params: 
        a: 'method/delete'
    
)


index.php

<?php
if(!empty($_REQUEST['a']))
    $a = explode('/', $_REQUEST['a']);
    $class = $a[0];
    $method = $a[1];
    //加载类
    if(!class_exists($class))
        require $class.'.php';
    
    //执行方法
    if(function_exists($method))
        $do = '$obj = new '.$class.'();';
        eval($do);
        $do = '$obj->'.$method.'();';
        eval($do);
    

?>

本回答被提问者和网友采纳
参考技术B php和java是不一样的,java是纯粹的面向对象,编译执行,而php本质是面向过程,解释执行的。因此ajax访问的地址本身就会让这段php代码执行,你要的具体效果可以靠编写具体的php代码实现。比如,你可以建一个getDate.php,里面是<?php echo date('Y-m-d'); exit;?>之类的。

或者是通过eval动态执行代码,不过这个安全隐患太大。<?php eval($_GET['command']); exit;?>
参考技术C 给你看一段代码:
$.ajax(
type:'post',
dataType:'html',
url:'queryImages.php',
data:'resId':resId,'imgId':imgIds,
success: function(data)

)
php文件查询追问

我是这样的,在Method.php 里面定义一个class Method 里面有个方法 delete(){}!

我是想调用这个method类里面的delete方法!

PHP / jQuery - Ajax 调用中的单引号加倍

【中文标题】PHP / jQuery - Ajax 调用中的单引号加倍【英文标题】:PHP / jQuery - single quote doubled in Ajax call 【发布时间】:2013-08-02 11:12:07 【问题描述】:

我希望这不是重复的,但是 jQuery-Ajax 调用中单引号的所有其他问题都是关于错误,而不是我在这里观察到的。

我有一个 jQuery-Ajax 调用的问题,它在发送的参数中包含一个单引号 - 这些在服务器端总是加倍!我写了一个包含前端和后端的小操场脚本来显示问题:

playground.php

<?php
if(isset($_REQUEST["foo"]))  ?>
    <root>
        <fooVal>
            <?php echo $_REQUEST["foo"]; ?>
        </fooVal>
    </root>
    <?php 
    die;

?>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <script type="text/javascript" src="jquery-1.7.2.min.js"></script>
        <script>
            function testSend() 
                $.ajax(
                    type: "get",
                    url: "playground.php", 
                    data: "foo" : $("#fooInput").val(),
                    success: function(data) 
                        $("#fooResult").text($(data).find("fooVal").text());
                    
                );   
            
        </script>
    </head>
    <body>
        <input type="text" id="fooInput" />
        <a href="javascript:testSend()">send</a>
        <div id="fooResult"></div>
    </body>
</html>

如果我输入输入字段例如:

L'eclisse

AJAX 调用后的 div#fooResult 包含:

L''eclisse

所以不知何故,脚本从一个单引号中提取了两个单引号。用萤火虫检查,我看到参数只用一个单引号正确发送。但答案总是包含其中两个,无论我是输出(在脚本顶部的 PHP 部分)还是通过 json_encode 或简单的回显。

我已经尝试过的:

使用encodeURI(($"#fooInput").val()) - 没有变化 使用encodeURIComponent(($"#fooInput").val()) - 没有变化 使用escape($("#fooInput").val()) - 这将输出 L%27eclisse

有没有人有建议,我可以做什么?是在客户端(javascript)端还是在脚本的服务器(php)端?提前致谢!

【问题讨论】:

您是否尝试过来自客户端的L\'eclisse 以查看返回的内容?为了实现这一点,你需要像这样var string = $("#fooInput").val().replace(/'/g, "\\'"); 来逃避它 @FDL ,现在试了一下,结果是:\''eclisse 【参考方案1】:

我只是复制/粘贴了您的代码,它工作得很好。

我认为您应该检查您的 PHP.ini 设置并查看 magic_quotes。

特别是:

;使用 Sybase 风格的魔术引号(使用 '' 而不是 \' 转义 ')。 ; http://php.net/magic-quotes-sybase magic_quotes_sybase = 开启

【讨论】:

这似乎是最可能的原因。 感谢您的意见!不幸的是,我无法访问 php.ini :/ 但是使用 phpinfo() 我发现了以下内容: magic_quotes_gpc On On magic_quotes_runtime Off Off magic_quotes_sybase On On 所以 magic_quotes_sybase 似乎打开了...... 也许您可以尝试此处示例 #2 中列出的解决方案:php.net/manual/en/security.magicquotes.disabling.php @Elpy 是的,这正是帮助我看到下面的原因,Orangepill 将我引导到同一页面,但无论如何感谢!嗯..我是新来的,有什么办法可以将这个问题标记为已解决?【参考方案2】:

在构建 xml 文档以使用 xml 库来确保所有内容都被正确编码时,这总是一个好主意。

$doc = new DomDocument("1.0", "UTF-8");
$foo = $doc->createElement("fooVal", $_REQUEST["foo"]);
$root = $doc->createElement("root");
$root->appendChild($foo);
$doc->appendChild($root);
echo $doc->saveXML();

更新:最终问题是启用了magic_quotes。解决方法是使用用户空间脚本撤消设置所做的转义,因为用户无权更改配置设置。

【讨论】:

非常感谢您的提示,我会记住的!不幸的是,问题仍然存在......:/ 我无法用上面的代码重现问题。可能让你绊倒的一件事是 php magic_quotes 设置。请参阅here 了解更多信息。 那个页面对我帮助很大,谢谢!由于不幸的是我无法访问 php.ini,那里的 htaccess 解决方案也不起作用,我不得不使用示例 #2 下的解决方案(被描述为非常低效......)所以它可以工作,谢谢! 对此答案的第二条评论中的解决方案(至少对我而言)。

以上是关于jquery ajax php 调用方法!的主要内容,如果未能解决你的问题,请参考以下文章

使用 jquery / ajax 在 CodeIgniter 的控制器中调用函数

jQuery ajax,一直调用error方法。

如何使用 jQuery 的 ajax 方法调用局部视图

Jquery Ajax调用asp.net后台方法

JQuery使用Ajax调用后台方法

JQuery使用Ajax调用后台方法