json_在Ajax请求中编码Php变量


Json_encoding a Php Variable in an Ajax Request

目前,我正在使用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为了帖子长度的缘故。还要注意,我有另一个调用类的页面,它通过引用$_POST['spreadsheet']将电子表格变量传递给PHP的构造函数,因此我知道我有正确的电子表格值。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有关。另外,进一步说明一下,当我在电子表格变量传递给所请求的PHP之前对其使用var_dump()时,我将其作为字符串输出,如下所示:

string(7560) "String content goes here"

第一次查看时,您使用的不是json_encode,而是var_dump。

当手动修改json编码字符串时,确保在变量周围使用"

和这个:

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

将导致:

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

用' if that's what you expect it. '换行

:

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