1

因此,我通过 jQuery AJAX 请求将商店列表添加到网页。这个小工具不是动态的,只是数据库驱动的。我决定使用 jQuery/AJAX 来传输数据,因为当我尝试在我们当前的 PHP CMS 中嵌入 PHP 时,我得到了一堆相互冲突的错误。

我遇到的问题是在尝试向 PHP 脚本发出请求时遇到 jQuery AJAX 错误,我不知道为什么。

这是我的 AJAX 请求

$(document).ready(function(){
    $.ajax({
        type:"POST",
        url:"getStores.php",
        dataType: "json",
        success:function(data){
            results(data);
        },
        error: function(data) {
            console.log(data.error);    
        }
    });
});

我得到的神秘控制台错误是这个

function (){if(c){var a=c.length;m(arguments),i?k=c.length:e&&e!==!0&&(j=a,n(e[0],e[1]))}return this} 

如果有帮助,这是我的 PHP 代码:

//database connection
$return_arr = array();
$sql = mysql_query("SELECT * FROM where_to_buy");
while($row = mysql_fetch_array($sql, MYSQL_ASSOC))
{  
    $row_array['store_name'] = $row['store_name'];
    $row_array['store_url'] = $row['store_url'];
    array_push($return_arr,$row_array);
}
echo json_encode($return_arr);

我认为问题可能是因为我将我的 JSON 包装在一个数组中?

编辑:: 根据要求从 php 脚本输出 JSON

[{"store_name":"Example 1","store_url":"http:\/\/www.example1.com"},{"store_name":"Example 2","store_url":"http:\/\/www.example2.com"}]

谢谢你的帮助!

4

1 回答 1

2

您收到奇怪错误消息的原因是 jQuery ajax 函数的错误回调采用 3 个参数而不是 1 个参数,如下面的文档中所述:http: //api.jquery.com/jQuery.ajax/

第一个参数是一个 jQuery 特殊的 XMLHttpRequest 对象,它有一个名为的属性error,其中包含您看到的记录到控制台的函数。在执行 ajax 调用期间发生的实际错误是作为第三个参数传递给错误回调的。

要查看它,您应该执行以下操作:

$(document).ready(function(){
    $.ajax({
        type:"POST",
        url:"getStores.php",
        dataType: "json",
        success:function(data){
            results(data);
        },
        error: function(jqXHR, text, error) {
            console.log(error);    
        }
    });
});

这会让你更接近真正的问题。

更新:

请显示您的 php 脚本的输出。可能是它没有返回有效的 json。如 php 文档 ( http://php.net/manual/en/function.json-encode.php ) 中所述,[json_encode] only works with UTF-8 encoded data.

您还可以检查json_last_error( http://php.net/manual/en/function.json-last-error.php ) 以查看编码是否由于某种原因而失败。

更新 3:

看来您的问题可能是 php 脚本的路径。

试试看:

$(document).ready(function(){
    $.ajax({
        type:"POST",
        url:"/getStores.php", // <-- notice the leading slash!!!
        //dataType: "json",
        success:function(data){
            //results(data);
            console.log(data);
        },
        error: function(jqXHR, text, error) {
            console.log(error);    
        }
    });
});

或者,如果上面将正确的 json 输出记录到控制台,则将它们重新组合在一起......

$(document).ready(function(){
    $.ajax({
        type:"POST",
        url:"/getStores.php",
        dataType: "json",
        success:function(data){
            results(data);
        },
        error: function(jqXHR, text, error) {
            console.log(error);    
        }
    });
});
于 2012-12-13T14:33:55.357 回答