什么在jQuery AJAX中响应?

时间:2015-02-13 07:32:35

标签: javascript php jquery ajax

我很抱歉在这里添加这个广泛的问题,但我似乎无法自己谷歌,我试过,我真的无法理解这背后的想法,所以这里。 所以我有一个网站使用AJAX登录用户而没有完整页面重新加载。我有点理解AJAX是如何工作的,我很抱歉我的无知,但就我而言:

$.ajax({
            url: './',
            type: 'POST',
            data: {auth: auth, login: login, pass: pass}
            success: function(res){
               // Code that checks if **res** is a specific string
            },
            error: function(){
                alert("Error!");
            }

据我所知,这会将POST请求发送到包含3个参数的同一页面。我不明白的是它作为一个特定的回应是什么?就我而言,res中的$_SESSION元素包含字符串消息 我的问题是:我如何知道响应中的内容?如果我只是echo我的函数中的某些内容,是否会得到响应?是否有关于可以传递给成功函数参数的文档?
我对此感到很困惑。

4 个答案:

答案 0 :(得分:2)

" res" ...或通常"数据"在大多数示例中,只是您发布到的页面的回复数据..

所以在PHP的情况下说...你肯定只会回复任何东西。

通常人们使用JSON,所以使用php你会创建一个包含你想要发回的所有数据的数组,然后简单地做

发布帖子的页面

<script>
    // JUST USING SUCCESS HERE ATM (Tthis does not show the full ajax command)
    // Refer to original question for full javascript
    success: function(res){
      var myData = $.parseJSON(res);
      if(myData.hasOwnProperty('name')){
          alert(myData.name);
      }
      if(myData.hasOwnProperty('object1') && myData.object1.hasOwnProperty('items')){
          alert(myData.object1.items.one);
      }
    },
</script>

您的PHP页面响应

<?php
  $myResponse = array();
  $myResponse['name'] = "John Doe";
  $myResponse['number'] = 123456789;
  $myResponse['other'] = "and so on";
  $myResponse['object1'] = array();
  $myResponse['object2'] = array();

  $myResponse['object1']['name'] = "john";
  $myResponse['object1']['items'] = array();
  $myResponse['object1']['items']['one'] = "one one 1";
  $myResponse['object1']['items']['two'] = "two two 2";

  $myResponse['object2']['name'] = "jane";


  echo json_encode($myResponse);
?>

使用&#34;多维&#34;在php中的数组中,您可以将数组的每个部分视为单独的部分/对象

这可能会有所帮助:http://www.thecave.info/pass-a-php-array-to-javascript-as-json-using-ajax-and-json_encode/

答案 1 :(得分:1)

好吧,我认为你“回声”的是你将在“res”中检索的内容, 尝试在控制台中看到它:

console.log(res); 

或带警报

alert(res);

答案 2 :(得分:1)

尝试console.log(res);并检查浏览器控制台

ctrl + shift + k(firefox)

f12(Chrome&amp; IE)

答案 3 :(得分:1)

对于你的任务,我建议使用getJSON,而不是.ajax。它只是同一功能的简写,但非常方便。

$.getJSON('/ajax-get-session/login/value/pass/value', function(json){
   if (!json.error) { //check if there wasn't error on the server side
       console.log(json.session);
   } else {
       console.log(json.error);
   }
});

在服务器端。

$response = array();
try {
  $response['session'] = $_SESSION;

}
catch (e) {
  $response['error'] = e;

}

echo json_encode($response)