我无法理解的AJAX响应

时间:2011-04-09 17:21:22

标签: php jquery ajax

我有两个问题:

如果我将ajax请求发送到自己的页面(从abc.php到abc.php),就像这样:

$.ajax({
   type: "POST",
   url: "some.php",
   data: "name=John&location=Boston",
   success: function(msg){
     alert( "Data Saved: " + msg );
   }
 });

如果我有一个完整的网页(包含div,form,imgs),msg变量将包含什么?它会包含整个HTML代码源吗?如何在根据$variableName查询数据库以查找记录之后,告诉ajax只返回特定的详细信息(例如php Location)。记住some.php是包含ajax脚本的同一文件。

我想创建一个.php脚本,其中包含可管理数据库的所有查询,如下所示:

if(isset($_GET['option']) && $_GET['option'] == 'insert') { code here .. and echo div`s .. etc) }
if(isset($_GET['option']) && $_GET['option'] == 'del') { code here .. and echo div`s .. etc) }
if(isset($_GET['option']) && $_GET['option'] == 'update') { code here .. and echo div`s .. etc) }
if(isset($_GET['option']) && $_GET['option'] == 'find') { code here .. and echo div`s .. etc) }
if(isset($_GET['option']) && $_GET['option'] == 'abc') { code here .. and echo div`s .. etc) }

我想基于option运行ajax请求并检索特定结果(如php $ variables ...等等)

我该怎么做?

无论如何,最重要的问题是如果收到ajax请求的页面已包含$variable,我如何获得仅包含php $array<html><body><divs><tables><h4><h3>.... etc的ajax.result?

因为jquery.ajax()的文档非常复杂/复杂,所以选项如accepts, async, complete, contentType, context .. and so on

非常感谢。

3 个答案:

答案 0 :(得分:1)

您可以使用dataType选项指定您希望从服务器返回的数据类型。在您的情况下,JSON可能是一个不错的选择,因为php页面可以返回以下形式的字符串:

  {name:value}

这很容易作为客户端上的JSON对象进行处理。

e.g。 Found on this page

 $.ajax({
   url: url,
   dataType: 'json',
   data: data,
   success: callback
 });

然后,您的回调函数将处理JSON并检索该值。从链接中可以看到,您可以使用getJSON()方法作为快捷方式。

答案 1 :(得分:1)

响应变量msg将包含您请求的页面的完整html。要获取php变量,您需要以javascript可以理解的方式打包变量,这通常意味着以json格式序列化对象/变量,然后在$.parseJSONeval上使用{ {1}}将结果字符串转换为javascript对象/数组。

答案 2 :(得分:0)

答案是,不要对已经包含<html><body等的页面发出ajax请求,请使用没有该内容的页面。

你需要的只是

echo $variable;