【问题标题】:$.post returns object when aiming for simple php$.post 在针对简单 php 时返回对象
【发布时间】:2015-08-15 13:48:20
【问题描述】:

我想我只是在使用 $.post 时遇到了困难……我过去曾成功使用过它,但我必须忘记一些重要的事情。我想要的只是一个“hello world”,但我得到了一个复杂的对象。我一头雾水。

var_test.php

<?php
    PRINT "hi";
?>

index.html

<!doctype html>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>
<html><head>
    var thing = $.post( "var_test.php");
    console.log(thing);
</head><body></body></html>

控制台输出

Object { readyState: 1, getResponseHeader: .ajax/v.getResponseHeader(), getAllResponseHeaders: .ajax/v.getAllResponseHeaders(), setRequestHeader: .ajax/v.setRequestHeader(), overrideMimeType: .ajax/v.overrideMimeType(), statusCode: .ajax/v.statusCode(), abort: .ajax/v.abort(), state: .Deferred/d.state(), always: .Deferred/d.always(), then: .Deferred/d.then(), 8 more… }

【问题讨论】:

    标签: php jquery ajax post


    【解决方案1】:

    您应该添加一个回调,而不是从您的 php 接收响应/数据:

    $.post( "var_test.php", function(response) {
        console.log(response);
    });
    

    该回调将在请求完成后执行,这样,您可以确保您的数据已准备好并设置为在您的 JS 中使用。

    【讨论】:

    • 这很有帮助,但是我如何将那个变量从该函数之外获取到 var 中呢?
    • 好吧,你不应该在回调之外使用那个变量,这是为什么呢?因为你应该等到请求完成,否则如果你在时间之前使用它,你最终可能会变得未定义。您可以在回调之外定义 var,在回调中填充它并在任何您想要的地方使用它,但正如我所说,这是不推荐的,因为在请求完成之前,变量将没有值,这就是 AJAX 的事情。
    【解决方案2】:

    问题在于 jquery 代码,要请求页面内容,请使用以下代码:

    $.post( "var_test.php", function( data ) {
        console.log( data );
    });
    

    在你写的代码中 $.post("var_test.php") 返回一个 jqXHR 对象,它是一个异步调用,所以你需要使用回调,更多信息可以在这里找到:

    http://api.jquery.com/jquery.post/

    【讨论】:

      【解决方案3】:

      $.post() 不应该返回您的数据,如果您仔细查看它具有连接数据的“大”对象。

      你想要这个

      $.post('var_test.php', function(myData) {
          console.log(myData);
      });
      

      你也应该使用 $.get() 来处理这类事情,方式完全相同

      $.get('var_test.php', function(myData) {
          console.log(myData);
      });
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-05-17
        • 1970-01-01
        • 2010-10-19
        • 1970-01-01
        • 1970-01-01
        • 2019-01-18
        • 1970-01-01
        • 2010-11-02
        相关资源
        最近更新 更多