可以ajax成功从PHP返回字符串?

时间:2012-10-31 16:00:02

标签: php ajax

我想在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并使用它的值,但有没有办法直接使用结果?或以某种方式将结果转换为字符串? php中的代码:

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

感谢。

4 个答案:

答案 0 :(得分:3)

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

dataType: "text",

dataType: "html",

答案 1 :(得分:0)

文本的dataType完全正常。确保您的PHP脚本正在为返回text / plain设置mime类型。

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

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

如果所有其他方法都失败了,请使用Firefox和Firebug。它将使您能够在成功结束中放置一个中断品脱,然后您可以检查结果变量的值。

答案 2 :(得分:0)

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

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

我使用成功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!";
  }
}
...

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

答案 3 :(得分:-1)

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

说,如果你想使用来自AJAX请求的信息,你必须在它的回调中使用它,否则它将无法使用。

类似的东西:

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

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

    }
});