jquery ajax php 调用方法!
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jquery ajax php 调用方法!相关的知识,希望对你有一定的参考价值。
ajax 如何能调用php的方法?
比如java 整合struts后能用“!”来调用方法
请各位大哥大姐帮帮忙
例如: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
<?phpif(!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 调用方法!的主要内容,如果未能解决你的问题,请参考以下文章