Json_encoding Ajax请求中的Php变量

时间:2014-08-11 16:14:08

标签: javascript php jquery ajax json

目前我正在使用jQuery Ajax异步函数多次请求PHP页面,直到处理了大量电子表格行。现在我使用以下代码来设置要传递给请求页面的变量,我不确定这是否是正确的方法。 PHP:

if($_SERVER['REQUEST_METHOD'] == 'POST') {
    $new_spreadsheet = nl2br($_POST['spreadsheet']);
    $new_spreadsheet = explode('<br />', $new_spreadsheet);
    array_shift($new_spreadsheet);
    $new_spreadsheet = array_values($new_spreadsheet);
    $new_spreadsheet = json_encode($new_spreadsheet);
    echo var_dump($new_spreadsheet);
}

的JavaScript / PHP:

var done = false,
offset = 0,
limit = 20,
rankings_abv_twenty = 0,
sum = 0,
num_count = 0,
websites = 1
<?php if($_SERVER['REQUEST_METHOD'] == 'POST') {
    echo ', spreadsheet = '.$new_spreadsheet;
}?>;

在请求的PHP页面(恰好是面向对象的PHP)上,我有以下代码来截断20行以处理给定的请求。请不要PHP是一个完整的工作类,我只是为了帖子长度没有包括所有的PHP。还要注意,我有另一个调用类的页面,它通过引用将电子表格变量传递给PHP的构造函数$ _POST ['spreadsheet'],所以我知道我有正确的值作为电子表格。 PHP:

$this->offset = $offset;
$this->limit = $limit;
$this->spreadsheet = json_decode($spreadsheet);

这是切掉行的PHP行:

$this->rows = array_slice($this->spreadsheet, $this->offset, $this->limit);

由于某些原因,我的代码无法正常工作,并且给出了与上述代码相关的以下错误:

PHP Warning:  json_decode() expects parameter 1 to be string, array given
PHP Warning:  array_slice() expects parameter 1 to be array, null given

我认为这可能与我的字符串如何传递所请求的PHP有关。另外,还有一点需要注意的是,当我在我的电子表格变量中使用var_dump()之后将其传递给请求的PHP,我将其输出为字符串,如下所示:

string(7560) "String content goes here"

1 个答案:

答案 0 :(得分:0)

第一眼看,你没有回应json_encode,而是使用了var_dump。

当手动修改json编码的字符串时,请务必使用&#34;在vars周围。

而且:

  websites = 1
  <?php if($_SERVER['REQUEST_METHOD'] == 'POST') {
    echo ', spreadsheet = '.$new_spreadsheet;
   }?>;

将导致:

  websites = 1, spreadsheet = "{"1":"foo","2":"bar","3":"baz","4":"blong"}";

将线路包裹在&#39;如果那是你所期待的......

像这样:

 echo ", spreadsheet = '".$new_spreadsheet."'";