我的状态为200,但在错误消息alert("error...");
中显示的是打印消息。为什么这样?
function makeSelect() {
var blouseoption = document.querySelector('input[name="blouseoption"]:checked').value;
var url = "http://dukano.co/sakhidev/retailon/productoption/values";
alert(url);
var jsondata = $j('#customoption').serialize();
alert("jsondata: " + JSON.stringify(jsondata));
$j.ajax({
type : 'POST',
url : url,
data : jsondata,
dataType : 'json',
success : function(response) {
console.log("calling");
console.log(response);
alert("call success");
alert("response data:" + JSON.stringify(response));
if (response.status == 200) {
console.log("yes");
} else if (response.status == "error") {
console.log("no");
}
},
error : function(response) {
alert("error...");
alert("response:" + JSON.stringify(response));
console.log(response);
}
});
}
Magento的控制器函数返回json值
public function valuesAction(){
$blouseoption = $this->getRequest()->getParam('blouseoption');
$sareefinishing = $this->getRequest()->getParam('sareefinishing');
$data = array( 'sfinishing' => $sareefinishing, 'layout' => $this->getLayout());
Mage::dispatchEvent('product_custom_option', $data);
$jsonData = json_encode(array($blouseoption, $sareefinishing));
$this->getResponse()->clearHeaders()
->setHeader('Content-type','application/json',true);
$this->getResponse()->setBody(Mage::helper('core')->jsonEncode($jsonData));
$this->getResponse()->sendResponse();
}
答案 0 :(得分:1)
正在使用
dataType: "json"
这会将响应评估为JSON并返回一个JavaScript对象。拒绝任何格式错误的JSON,并抛出一个解析错误。
这意味着如果服务器返回带有200 OK status
的无效JSON,则jQuery
将触发错误函数并将textStatus
参数设置为"parsererror"
。
确保服务器返回有效的JSON。空响应也被认为是无效的JSON;你可以返回{}或null,例如验证为JSON。 尝试检查错误中的textStatus。
error : function(jqXHR,textStatus,errorThrown)
{console.log(textStatus)}
如果打印出“parsererror”,那么当然你的返回json有问题。请检查一下。