如何从ajax调用中调用PHP类函数
animal.php
文件
class animal
{
function getName()
{
return "lion";
}
}
然后在我的ajax.php
文件中,我有一个ajax请求,需要从getName函数获取值
怎么做那个getName()
函数我可以这样做吗?
<script type=text/javascript>
$.ajax({
type: "POST",
data: {
invoiceno:jobid
},
url: "animal/getName",
beforeSend: function() {
},
dataType: "html",
async: false,
success: function(data) {
result=data;
}
});
</script>
发布于 2013-07-05 21:13:15
我的答案与Surreal Dreams answer相同,但使用了代码。
第一。类动物是可以的。让它保持原样:
animal.php
<?php
class animal
{
function getName()
{
return "lion";
}
}
下一个。创建新的animalHandler.php
文件。
<?php
require_once 'animal.php';
if(isset( $_POST['invoiceno'] )) {
$myAnimal = new animal();
$result = $myAnimal->getName();
echo $result;
}
终于来了。更改您的Javascript。
<script type=text/javascript>
$.ajax({
type: "POST",
data: {
invoiceno:jobid
},
url: "animalHandler.php",
dataType: "html",
async: false,
success: function(data) {
result=data;
}
});
</script>
这就是。
发布于 2013-07-05 20:49:13
您需要一个额外的脚本,因为您的动物类本身不能做任何事情。
首先,在另一个脚本文件中,包含animal.php。然后创建一个动物类的对象-让我们称它为myAnimal。然后调用myAnimal->getName()并回显结果。这将提供对Ajax脚本的响应。
使用这个新脚本作为Ajax请求的目标,而不是以animal.php为目标。
发布于 2013-11-21 00:03:27
目前在php中使用OOP:
ajax.html程序(客户端层) -> program.php (中间层) -> class.php (中间层) -> SQL调用或SP (db层)
当前使用DotNet的OOP:
ajax.html程序(客户端层) -> program.aspx.vb (中间层) -> class.cls (中间层) -> SQL调用或SP (db层)
我在现实生活中的解决方案是:做面向对象分析,而不是面向对象。
因此,我为每个表发一个类一个文件-使用它们适当的ajax调用,并使用-as参数选择相应的ajax调用(即模式)。
/* mytable.php */
<?
session_start();
header("Content-Type: text/html; charset=iso-8859-1");
$cn=mysql_connect ($_server, $_user, $_pass) or die (mysql_error());
mysql_select_db ($_bd);
mysql_set_charset('utf8');
//add
if($_POST["mode"]=="add") {
$cadena="insert into mytable values(NULL,'".$_POST['txtmytablename']."')";
$rs=mysql_query($cadena,$cn) or die(mysql_error().' : '.$cadena);
};
//modify
if($_POST["mode"]=="modify") {
$cadena="update mytable set name='".$_POST['txtmytablename']."' where code='".$_POST['txtmytablecode']."'";
$rs=mysql_query($cadena,$cn) or die(mysql_error().' : '.$cadena);
};
//erase
if($_POST["mode"]=="erase") {
$cadena="delete from mytable where code='".$_POST['txtmytablecode']."'";
$rs=mysql_query($cadena,$cn) or die(mysql_error().' : '.$cadena);
};
// comma delimited file
if($_POST["mode"]=="get") {
$rpta="";
$cadena="select * from mytable where name like '%".$_POST['txtmytablename']."%'";
$rs=mysql_query($cadena,$cn) or die(mysql_error().' : '.$cadena);
while($row = mysql_fetch_array($rs)) {
$rowCount = mysql_num_fields($rs);
for ($columna = 0; $columna < $rowCount; $columna++) {
$rpta.=str_replace($row[$columna],",","").",";
}
$rpta.=$row[$columna]."\r\n";
}
echo $rpta;
};
//report
if($_POST["mode"]=="report_a") {
$cadena="select * from mytable where name like '%".$_POST['txtmytablename']."%'";
$rs=mysql_query($cadena,$cn) or die(mysql_error().' : '.$cadena);
while ($row=mysql_fetch_array($rs)) {
echo $row['code']." ".$row['name']."<br/>"; // colud be a json, html
};
};
//json
if($_POST["mode"]=="json_a") {
$cadena="select * from mytable where name like '%".$_POST['txtmytablename']."%'";
$rs=mysql_query($cadena,$cn) or die(mysql_error().' : '.$cadena);
$result = array();
while ($row=mysql_fetch_array($rs)) {
array_push($result, array("id"=>$row['code'],"value" => $row['name']));
};
echo json_encode($result);
};
?>
https://stackoverflow.com/questions/17489109
复制相似问题