Ajax成功不能将PHP echo作为字符串读取

时间:2014-07-08 12:25:23

标签: php jquery ajax

我有一个简单的PHP脚本,当它从AJAX调用中正确执行时,结束于:

echo "ok";

然而,当我尝试解析这些信息时,它告诉我它不是一个字符串。

在下面的示例中,结果为:alert('error: Type Mismatch');

为什么JQuery不能将php echo作为字符串读取?

$.ajax({
url: '/ajax/actions/imageUpload.php?act_id=<?=$act_id?>',
type: 'POST',
success: function (response) {
    if(typeof response == typeof 'string'){
        if( response == 'ok')
             alert('all is good');
         else
           alert('error:');
    } else {
        alert('error: Type Mismatch');
    }
}
});

下面的屏幕截图显示答案是正确的,只是说“好”&#39;

enter image description here

4 个答案:

答案 0 :(得分:1)

当我正在阅读jquery Api Doc时,我知道你可以根据你在$中传递的数据类型(如果你这样做)获得一个“字符串”或其他内容作为response。 ajax对象。否则它将基于一些自己的逻辑从jQuery中得到假设。

在我看来,你应该避免每一个假设,并根据你发送的响应格式明确传递dataType。

所以,

如果您将response.php设置为

echo "ok";

你应该在你的ajax调用中设置dataType“text”:

$.ajax({
    url: 'imageUpload.php',
    type: 'POST',
    dataType: "text",
    ...

并获得回复:

if(typeof response == "string")
{
    console.info(response);
    ...

或者

如果您将response.php设置为返回

之类的内容
echo json_encode(array("data" => "ok"));

你应该设置dataType“json”:

$.ajax({
    url: 'imageUpload.php',
    type: 'POST',
    dataType: "json",
    ...

并获得回复:

if(typeof response == "object")
{
    console.info(response.data);
    ...

答案 1 :(得分:0)

$.ajax({
url: '/ajax/actions/imageUpload.php?act_id=<?=$act_id?>',
type: 'POST',
success: function (response) {
        if (typeof response === "string"){
            if (response == 'ok')
                alert('all is good');
            else
                alert('error:');
        } else {
            alert('error: Type Mismatch');
        }
    }
});

答案 2 :(得分:0)

以另一种方式行事:

在你的php脚本中回显一个JSON:json_encode("ok");

在AJAX中指定dataType: "json"并添加事件:

complete: function(jsondata, stat)
{
  if(stat == "success")
      alert( $.parseJSON( jsondata.responseText ) );
}

答案 3 :(得分:0)

响应不是字符串类型,它是PlainObject对象。

success
Type: Function( PlainObject data, String textStatus, jqXHR jqXHR )


typeof response == 'object' // true

试试这个:

$.ajax({
    url: '/ajax/actions/imageUpload.php?act_id=<?=$act_id?>',
    type: 'POST',
    dataType: "text", 
    success: function (response) {

        if( response == 'ok')
             alert('all is good');
        else
           alert('error:');
    }
});