【问题标题】:can ajax success return string from php?ajax成功可以从php返回字符串吗?
【发布时间】:2016-08-01 22:04:47
【问题描述】:

我想在 ajax 成功时比较两个值(都是简单的字符串)。 Value1 是来自 php 的 echo,value2 是 javascript 变量。但是当我尝试这样的事情时:

$.ajax({
    type: "POST",
    url: proccessPage,
    data: dataString,
    dataType: "text",
    success:function(result){

    alert (result);

    }
});

我将收到消息“[object Object]”。当我尝试将alert (result); 更改为

var response = $(result);
document.getElementById("div1").innerHTML = result;

那么 id 为“div1”的 div 具有适当的值。我知道我可以隐藏 div 并从中使用值,但是有什么方法可以直接使用 result 吗?或者以某种方式将结果转换为字符串? php中的代码:

if (isset($_POST['submit']) && $_POST['submit']=="true")
echo "string";

谢谢。

【问题讨论】:

  • 你的结果格式是什么?
  • 你在 php 中回响什么?

标签: php ajax


【解决方案1】:

在您的脚本中,将数据类型更改为 html。

dataType: "text",

dataType: "html",

【讨论】:

    【解决方案2】:

    文本的数据类型完全没问题。确保您的 PHP 脚本正在设置返回 text/plain 的 mime 类型。

    PHP 代码: header('Content-type: text/plain');

    jQuery 将根据服务器所说的处理返回。 dataType 字段只是一个提示。 http://docs.jquery.com/Specifying_the_Data_Type_for_AJAX_Requests

    如果一切都失败了,请使用带有 Firebug 的 Firefox。它将使您能够在成功闭包中放置一个中断品脱,然后您可以检查结果变量的值。

    【讨论】:

      【解决方案3】:

      通过从 PHP 函数创建一个 json 响应并使用我需要的任何内容加载它,我取得了成功。比较来自 Json 对象的已知值通过为您提供已知的对象属性(使用 JSON 声明)来处理您的 [object Object] 返回问题:

      $response = json_encode( array( 'success' => true , 'value1' => $my_result,);
      header( "Content-Type: application/json" );
      echo $response;
      exit;
      

      我使用success bool 来确保$my_result 是一个成功的响应,因为AJAX 可能会正确执行,但这允许我专门检查有效的value1

      现在,回到你的 $.ajax:

      ...
      success: function(result){
        if(result['success']) { 
          document.getElementById("removeme").innerHTML = (result['value1'] == value2)? value1 : "Uh-oh. Something went wrong!";
        }
      }
      ...
      

      或者你可以在你的成功函数体中加入任何合适的东西,无论你需要比较或做什么。我只是举了一个例子来展示一个完整的实现。

      【讨论】:

        【解决方案4】:

        AJAX 中的第一个 A 表示异步,这意味着您的请求将正常执行,但只有在请求得到响应时才会执行回调。脚本不会暂停等待响应。

        话虽如此,如果您想使用来自 AJAX 请求的信息,则必须在其回调中使用它,否则它将不可用。

        类似这样的:

        $.ajax({
            type: "POST",
            url: proccessPage,
            data: dataString,
            dataType: "text",
            success:function(result){
        
                document.getElementById("removeme").innerHTML = result; 
        
            }
        });
        

        【讨论】:

          猜你喜欢
          • 2014-05-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-08-26
          • 2011-02-07
          • 1970-01-01
          • 2015-10-06
          相关资源
          最近更新 更多