Php Ajax请求不使用数据类型;jsonp“;或;json";

Php Ajax请求不使用数据类型;jsonp“;或;json";,php,jquery,ajax,json,Php,Jquery,Ajax,Json,我试图使用JSON作为Ajax请求的返回类型(使用jQuery),但我的代码总是导致错误。我尝试过在json和jsonp之间更改MIME类型,但没有效果 我也不确定是否正确格式化了data:part。我知道我需要将它的所有信息包装成一个JSON字符串,但我不知道它是否正确 $.ajax({ type: "POST", url: '-----', dataType: "jsonp", data: '{"jobtitle":"job"}', beforeS

我试图使用JSON作为Ajax请求的返回类型(使用jQuery),但我的代码总是导致错误。我尝试过在json和jsonp之间更改MIME类型,但没有效果

我也不确定是否正确格式化了data:part。我知道我需要将它的所有信息包装成一个JSON字符串,但我不知道它是否正确

$.ajax({

    type: "POST",
    url: '-----',
    dataType: "jsonp",
    data: '{"jobtitle":"job"}',

    beforeSend:function(){ },


    success: function(data){
        var data = $.parseJSON(data);           

    },
    error: function(){
        alert("error with Ajax request");
    }

});
编辑:这是我的服务器端代码。我不知道如何从这里返回有效的JSON

<?php 


$jobtitle = $_POST["jobtitle"];
$city = $_POST["city"];
$state = $_POST["state"];



$url = "http://www.indeed.com/jobs?q=". $jobtitle ."&l=". $city ."%2C". $state;
$document = new DOMDocument;

$html = file_get_contents($url);
$document ->loadHTML($html);
$xpath= new DOMXPath($document);

$results = $xPath->query('//div[@id="searchCount"]');

$string = "";

if ($results){
    for ($i=0; $i < $results->length; $i++) {
            $node = $results->item($i)->textContent;


    }
    $exp = explode(" ", $node);

    print "Number of jobs: <b>".$exp[5]. "</b>";


}

从中去掉单引号

 data: '{"jobtitle":"job"}',
成功

 data: {"jobtitle":"job"},
您的数据类型可能应该是
json
。带填充的JSON(jsonp)用于跨域ajax(ish)请求

在成功回调中,数据将是json对象,而不是json字符串

 var data = $.parseJSON(data);  

这是不需要的

无论您的服务器代码是什么,都不能简单地调用
$.parseJSON(数据)
。 如果服务器实际返回JSONP,
数据的格式如下

clientSideMethodName({ ... actual JSON data ... });
如果服务器返回JSON,则必须a)通过
数据类型
属性在请求中指定,或b)完全删除该属性,让jQuery进行猜测。
jQuery非常棒,所以我认为它的猜测是正确的——在任何一种情况下,它都会自动为您调用
.parseJSON()
,因此您的手动调用也会失败。

您为什么不这样尝试ajax请求:

$.post(url,{"jobtitle" : "job"},function(response) 
  { 
     console.log(response);  
 },'json').error(function()
      {
          alert("error with Ajax request");
      });
而不是:

print "Number of jobs: <b>".$exp[5]. "</b>";
dataType: "jsonp",
也不是:

print "Number of jobs: <b>".$exp[5]. "</b>";
dataType: "jsonp",
试试json:

dataType: "json",
我认为jsonp与跨域请求有关。我还没有享受到实现JSONP的乐趣,但我认为它就是这样做的:p

此外,您还可以摆脱此问题:

var data = $.parseJSON(data);
在它的位置上旋转一下

console.log(data); // this is my best buddy

数据类型用于返回的数据,而不是发送的数据,因此您的服务器或您联系的任何东西是否返回有效的JSON?请显示您的服务器端代码我认为将POST与jsonp一起使用是您的问题。回调中的数据将是JSON而不是JSON字符串,因此parseJSON将不起作用