2

我想比较 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";

谢谢。

4

4 回答 4

3

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

dataType: "text",

dataType: "html",
于 2012-10-31T16:03:28.300 回答
0

text 的 dataType 完全没问题。确保您的 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。它将使您能够在成功闭包中放置一个中断品脱,然后您可以检查结果变量的值。

于 2012-10-31T16:21:00.780 回答
0

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

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

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

现在,回到你的 $.ajax:

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

或者,您可以将任何合适的内容放入成功功能主体中,无论您需要比较或做什么。我只是举了一个例子来展示一个完整的实现。

于 2016-08-01T14:04:47.567 回答
-1

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

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

像这样的东西:

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

        document.getElementById("removeme").innerHTML = result; 

    }
});
于 2012-10-31T16:04:57.960 回答