jQuery Ajax返回多个数据

时间:2016-07-14 17:50:21

标签: javascript php jquery json ajax

我正在使用jQuery AJAX从PHP返回一个字符串,其中包含一些JavaScript,PHP和HTML。

我可以使用以下代码成功完成此操作:

header("Content-Type: text/html");
echo $content;

$.ajax({
    type: 'POST',
    url: url,
    data: data,
}).done(function(result) {

}).fail(function(jqXHR, textStatus, errorThrown) {
    console.log(jqXHR, textStatus, errorThrown);
});

我现在遇到的问题是我想要沿着这个字符串返回一些其他简单的值。

但是如果我使用json_encode发送这些值的数组,它将破坏我的字符串并且不会成功。

如何将一个值作为字符串(不包含json_encode)和其他一些值json_encode发送? (所以我不是json_encode我的字符串)

EDIT1:

以下是格式问题1:

return 'autoOpenPopup: '.!empty($options["autoOpenPopup"]) ? $this->int_to_bool($options["autoOpenPopup"]) : $this->int_to_bool(false) . PHP_EOL .';

2:

return '.!isset($options["popupInit"]) ?

                $playerId.' = jQuery("#'.$wrapperId.'").hap(settings);

            ':'

                if(hasLocalStorage){

                    if(!localStorage.getItem("hap_popup_fixed")){
                        '.$playerId.' = jQuery("#'.$wrapperId.'").hap(settings);
                    }
                }else{
                    '.$playerId.' = jQuery("#'.$wrapperId.'").hap(settings);  
                }

2 个答案:

答案 0 :(得分:3)

最好的方法是将json_encode数据和字符串组合在一起;

$data = array('some', 'array', 'elements');

$string = 'my string';

$data2 = array('more', 'data');

然后将所有这些组合在一个数组中:

$result  = array();
$result['data1'] = $data;
$result['string'] = $string;
$result['data2'] = $data2;

最后json_encode数组:

echo json_encode($result); 

然后你在JS中读取结果:

$.ajax({
    type: 'POST',
    url: url,
    data: data,
}).done(function(result) {
  var jsonResult = $.parseJSON
  var data1 = result.data;
  var data2 = jsonResult.data2;
  var str = jsonResult.string;

}).fail(function(jqXHR, textStatus, errorThrown) {
    console.log(jqXHR, textStatus, errorThrown);
});

答案 1 :(得分:0)

标题('内容类型:application / json'); echo json_encode($ data,true);

和$ .ajax({... dataType:' json'});